2012-03-13 7 views
4

아파치의 commons-net FTPClient를 사용하여 파일을 업로드하고 있습니다.
storeFileStream 메소드를 사용하고 있습니다.
이것은 첫 번째 호출에는 적합하지만 두 번째 호출에서는 null을 반환하고 .getReplyStrings()은 "200 PORT command successful"을 반환합니다!FTPClient의 storeFileStream에 대한 두 번째 호출이 null을 반환합니다.

FileInputStream fis = null; 
    File LF=new File(localFilePath); 
    InputStream is = new FileInputStream(LF); 

    for(String DP:(remoteBasepath+"/"+remoteFilePath).split("/")){ 
     if(!client.changeWorkingDirectory(DP)){ 
      client.makeDirectory(DP); 
      client.changeWorkingDirectory(DP); 
     } 
    } 

    for(String line:client.getReplyStrings()){ 
     System.out.println(line); 
    } 
    OutputStream os = client.storeFileStream(LF.getName()); 
    byte[] buffer = new byte[1024]; 
    int len; 
    System.out.println("start"); 
    long RBUN=0L; 
    for(String line:client.getReplyStrings()){ 
     System.out.println(line); 
    } 
    while ((len = is.read(buffer)) != -1){ 
     os.write(buffer, 0, len); 
     os.flush(); 
     RBUN+=len; 
     CFPRGS.setValue(Math.round((RBUN*100/LF.length()))); 
    } 
    for(String line:client.getReplyStrings()){ 
     System.out.println(line); 
    } 
    is.close(); 
    os.close(); 

문제가 무엇인가
내 코드 (즉, 각 파일에 대한 루프의 방법으로 불린다)이다?

답변

8

내가 호출해야합니다 파일을 업로드 한 후 :

client.completePendingCommand();