Apache Commons Net FTP [resolvido]

1 resposta
FrancoC

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.

1 Resposta

FrancoC

Esqueci de resetar o stream.

Criado 15 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 1
Participantes 1