Postanowilem napisac synchronizator pomiedzy serwerem FTP a plikami lokalnymi wszystko wydawało się proste jednak pojawił sie problem w funkcji do kopiowania całych katalogów.
Wydawałoby sie ze powinno to działać bez problemu, jednakze pojawia sie problem ze ścieżkami pod ktore mam kopiować, log z serwera FTP wyglada w ten sposób:
09:08:01 #2 << 230 User ss logged in.
09:08:01 #2 >> PWD
09:08:01 #2 << 257 "/C:/SERWER/" is current directory.
09:08:01 #2 >> EPSV ALL
09:08:01 #2 << 500 'EPSV': command not understood.
09:08:01 #2 >> PASV
09:08:01 #2 << 227 Entering Passive Mode (127,0,0,1,12,10).
09:08:01 #2 >> LIST
09:08:01 #2 << 150 Opening data connection for directory list.
09:08:01 #2 << 226 File sent ok
09:08:15 #2 >> MKD c
09:08:15 #2 << 257 'C:\SERWER\c': directory created.
09:08:15 #2 >> MKD FTP
09:08:15 #2 << 257 'C:\SERWER\FTP': directory created.
09:08:15 #2 >> TYPE I
09:08:15 #2 << 200 Type set to I.
09:08:15 #2 >> TYPE I
09:08:15 #2 << 200 Type set to I.
09:08:15 #2 >> EPSV ALL
09:08:15 #2 << 500 'EPSV': command not understood.
09:08:15 #2 >> PASV
09:08:15 #2 << 227 Entering Passive Mode (127,0,0,1,12,13).
09:08:15 #2 >> STOR ocuments and Settings\Robert.24XPAMD\Moje dokumenty\NetBeansProjects\FtpSync\c\FTP\FORUM.ZIP
09:08:15 #2 << 150 Opening data connection for ocuments and Settings\Robert.24XPAMD\Moje dokumenty\NetBeansProjects\FtpSync\c\FTP\FORUM.ZIP.
09:08:15 #2 << 426 Connection closed; Cannot create file C:\SERWER\ocuments and Settings\Robert.24XPAMD\Moje dokumenty\NetBeansProjects\FtpSync\c\FTP\FORUM.ZIP.
Tymczasowe wywołanie funkcji ktora ma skopiowac z dysku c:\c (katalog c):
File z=new File("c:\\c");
File tam=new File("c");
try {
kopiuj_katalog(z, tam);
} catch (IOException ex) {
Logger.getLogger(FtpSyncView.class.getName()).log(Level.SEVERE, null, ex);
}
Funkcja kopiująca katalogi.
public void kopiuj_katalog(File skad, File gdzie)
throws IOException{
if (skad.isDirectory()){
if (!baza_sync.czy_istnieje_katalog_na_FTP(gdzie.getName())){
polaczenie.mkdir(gdzie.getName());
}
String files[] = skad.list();
for(int i = 0; i < files.length; i++){
kopiuj_katalog(new File(skad, files[i]),
new File(gdzie, files[i]));
}
}
else{
if(!skad.exists()){
System.out.println("Plik lub katalog nie istnieje");
//System.exit(0);
}
else
{
Plik.local=skad.getAbsolutePath();
Plik.remote=polaczenie.parser_gdzie(gdzie);
Upload w= new Upload();
w.start();
}
}
}
Klasa przechowująca sciezki na potrzeby wątku
class Plik{
static String local,remote;
static int rozmiar;
}
Wątek obsługujący UPLOAD;
public class Upload extends Thread {
@Override
public void run() {
try{
int i = 0;
int counter=0;
polaczenie.binary();
byte[] bytesIn = new byte[1024];
FileInputStream in = new FileInputStream(Plik.local);
File plik= new File(Plik.local);
jProgressBar1.setMaximum((int)plik.length());
BufferedOutputStream out = new BufferedOutputStream(polaczenie.put(Plik.remote));
while ((i = in.read(bytesIn)) >= 0) {
counter=(counter+i);
jProgressBar1.setValue(counter);
out.write(bytesIn, 0, i);
}
in.close();
out.close();
}
catch(Exception e)
{
System.out.println("WYJATEK");
}
}
}
Może ktoś ma pomysł jak rozwiązać mam ten problem ??