FTPClient不让我用InputStream写

时间:2013-08-13 19:49:34

标签: java ftp ftp-client

我有一个java文件,它将字符串(长文本文档)FTP到远程位置。一切似乎都有效,但是当调用ftp.storeFile(a,b)时,我的挂起时间非常长。然后返回一个replyCode 425.这是奇怪的,因为myData.txt出现在远程目标内,但它是空白的。必须有阻止输入流的东西?有谁知道这个问题是什么?

Java代码:

public void doFTP(){      
       FTPClient ftp = new FTPClient();
       FTPClientConfig config = new FTPClientConfig();
       ftp.configure(config);
       boolean error = false;
       try {
         int reply;
         String server = "example.com";
         ftp.connect(server);
         ftp.login(username, password);
         reply = ftp.getReplyCode();
         if(!FTPReply.isPositiveCompletion(reply)) {
           ftp.disconnect(); 
         } 
         InputStream is = new ByteArrayInputStream(myString.getBytes()); //String
         ftp.setFileType(ftp.BINARY_FILE_TYPE, ftp.BINARY_FILE_TYPE);
         ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);
         Boolean test = ftp.storeFile("myData.txt", is);  //FTP store here
         System.out.println(test);
         reply = ftp.getReplyCode();
         System.out.println(reply);
         is.close();
         ftp.logout();
       } catch(IOException e) {
       // ... not important
       } finally {
       // ... not important
       }
 }

2 个答案:

答案 0 :(得分:0)

您展示的代码对我来说很奇怪。你有 InputStream is = 的地方 此代码应位于 try {.....} 代码块中。

答案 1 :(得分:0)

发现问题,我需要将其切换为:

ftp.enterLocalPassiveMode();

如果有人愿意解释,我仍然不太明白为什么要这样做。