Sei que o post já faz quase 2 anos, mas estou com a necessidade hoje de fazer o contrário.
Preciso pegar do servidor via Ftp e salvar na máquina local.
E o problema que está acontecendo é o mesmo que o do amigo. Os arquivo vem com 0k.
Alguém sabe como resolver?..
package Programa;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPClient;
public class Principal {
public static void main( String[] args ) {
String nomeArquivo = null;
FTPClient ftp = new FTPClient();
try {
ftp.connect("server"); //aqui estou colocando o IP
//verifica se conectou com sucesso!
if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
ftp.login("login", "senha");
} else {
//erro ao se conectar
ftp.disconnect();
System.out.println("Conexão recusada");
System.exit(1);
}
// ftp.enterLocalActiveMode();
// ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE);
// ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
FTPFile[] files = ftp.listFiles();
for( int i=0; i<files.length; i++ ) {
System.out.println( files[i].getName() );
ftp.setFileTransferMode(FTPClient.ASCII_FILE_TYPE);
ftp.setFileType(FTPClient.ASCII_FILE_TYPE);
OutputStream os = new FileOutputStream("aqui o diretório local"+files[i].getName()) ;
ftp.enterLocalPassiveMode();
ftp.retrieveFile("aqui o diretório do server", os );
}
ftp.disconnect();
System.out.println("Fim. Tchau!");
} catch( Exception e ) {
System.out.println("Ocorreu um erro: "+e);
System.exit(1);
}
}
}
Se alguém puder me ajudar nessa agradeço…
Postei só essa merreca de código aí pra não poluir muito… obrigado a todos>