ftp apache-commons извлекает несколько файлов - PullRequest
7 голосов
/ 15 декабря 2010

Я пытаюсь использовать apache-commons net FTP lib для получения с FTP-сервера.Код работает нормально, если в каталоге только 1 файл, но всегда возвращает null во второй раз, когда я вызываю retrieveFileStream ().Какие-нибудь мысли?Я написал следующий пример кода, чтобы продемонстрировать мою проблему.

public static void main(String[] args) throws Exception
  {
    String strLine;
    FTPClient client = null;

    try{
      client = new FTPClient();
      client.connect("localhost", 21);
      client.enterLocalPassiveMode();
      client.login("ftptester", "letmein");

      client.changeWorkingDirectory("remote");

      FTPFile[] ftpFiles = client.listFiles();          
      if (ftpFiles != null && ftpFiles.length > 0) {
        for (FTPFile file : ftpFiles) {
          if (!file.isFile()) {
            continue;
          }

          InputStream fin = client.retrieveFileStream(filepath);
          if (fin == null) {
            System.out.println("could not retrieve file: " + filepath);
            continue;
          }

          byte[] data = readBytes(fin);  // helper method not shown, just processes the input stream
          fin.close();
          fin = null;

          System.out.println("data: " + new String(data));          
        }
      }
    }
    finally {
      ...  // cleanup code
    }
  }

1 Ответ

17 голосов
/ 15 декабря 2010

Doh! Пропавшая магия была:

completePendingCommand()
...