Não estou conseguindo mover arquivos por entre diretorios em um servidor FTP.
Nao encontrei na classe FTPClient (http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html) nenhum método que implementasse essa transferência do arquivo de um diretório para outro.
Entao eu vi como unica solucao primeiro copiar o arquivo para o diretorio destino e depois deletar do diretorio origem. Até aí as rotinas estao funcionando beleza, o problema eh que quando ele copia o arquivo ele vem completamente vazio, zero bytes.
FTPFile[] ftpArray = ftp.listFiles();
String cwd = ftp.printWorkingDirectory();
for (int i = 0; i < ftpArray.length; i++) {
InputStream input = ftp.retrieveFileStream(ftpArray[i].getName());
leio arquivo aqui ...
if (!ftp.completePendingCommand()) {
ftp.logout();
ftp.disconnect();
System.err.println(ftp.getReplyString());
System.err.println("Tranferencia de arquivos falhou.");
System.exit(1);
}
ftp.storeFile(cwd + "/backup/" + ftpArray[i].getName(), input);
System.out.println(ftp.getReplyString());
ftp.deleteFile(ftpArray[i].getName());
System.out.println(ftp.getReplyString());
}
O meu objeto InputStream quando empacotado em InputStreamReader e BufferedReader está sendo lido numa boa.
Segundo a assinatura do método storeFile(), o InputStream deve ser local e o meu está sendo obtido remotamente pelo metodo retrieveFileStream(). Acredito que seja esse o problema, mas não vejo outro modo de implementar isso.
public boolean storeFile(String remote, InputStream local) throws IOException
Parameters:
remote - The name to give the remote file.
local - The local InputStream from which to read the file.
Estou recebendo replies codes positivos:
226 Transfer complete.
250 DELE command successful.
Quem ai ja teve experiencia com essa API e puder me dar uma luz, desde ja sou grato.