2010-12-15 2 views
7

FTP 서버에서 get을 수행하기 위해 apache-commons net FTP lib를 사용하려고합니다. 디렉토리에 단 하나의 파일 만 있으면 코드가 제대로 작동하지만 retrieveFileStream()을 호출하면 두 번째로 항상 null이 반환됩니다. 이견있는 사람? 내 문제를 설명하기 위해 다음 예제 코드를 작성했습니다.apache-commons ftp 여러 파일 검색

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 
    } 
    } 

답변

17

Doh! 누락 된 마법은 다음과 같습니다.

completePendingCommand() 
+0

감사합니다. 그게 내 문제로 나를 실제로 도왔다 – Ascalonian

+0

같은, 고마워! – Gevorg

+0

나는이 1 시간을 알아 내려고 애쓰는 마지막 시간이었습니다. - 감사합니다 !! – kbbucks