Witam
Mam własną metodę której podaję dwa argumenty jeden z nich to katalog na serwerze ftp a drugi to ścieżka do katalogu w komputerze gdzie ma ten katalog z serwera zapisać.
Oczywiście algorytm jest rekurencyjny i pozwala skopiować (mam taką nadzieję) katalog z zawartością.
Oto jego całość:
private void copyAll(String katalog, String desc)
{
try {
f.changeWorkingDirectory(katalog);
FTPFile[] pliki = f.listFiles();
desc = desc + "/" + katalog;
File td = new File(desc);
td.mkdir();
for(int i=0; i<pliki.length; i++)
System.out.println(pliki[i].getName());
for(int i=0; i<pliki.length; i++)
{
if(!pliki[i].isDirectory())
{
InputStream in = null;
try {
in = f.retrieveFileStream(pliki[i].getName());
System.out.println(pliki[i].getName());
FileOutputStream out = new FileOutputStream(desc +"/"+ pliki[i].getName());
byte[] buff = new byte[4096];
int count = 0;
while ((count = in.read(buff)) != -1)
out.write(buff, 0, count);
in.close();
out.close();
} catch (IOException ex) { }
}
else
{
copyAll(pliki[i].getName(), desc+pliki[i].getName());
}
}
Jednak po skopiowaniu jednego czasem przedostatniego pliku z katalogu funkcja wylatuje. W katalogu na serwerze znajduje się kilka plików które dla próby chcę ściągnąć.
Od słowa try do słowa catch część skopiowałem z innego postu z forum.
Kod wylatuje przy: while "((count = in.read(buff)) != -1)" z wyjątkiem:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Dodam że pliki istnieją a pierwszy "for" wyświetla wszystkie pliki w katalogu.
Nie wiem o czym zapomniałem albo czego nie wiem. Albo można to zrealizować w inny sposób ??:)
Dzięki za pomoc :)