Android FTPClient - retrieveFileStream() 总是返回 null

标签 android ftp-client apache-commons-net

我是 Android 新手。我正在尝试使用 Apache Commons FTPClient 从 ftp 服务器将文件下载到 sdcard。 InputStream input = client.retrieveFileStream("/"+ fileName); 行始终返回 null。但该文件位于 Ftp 位置。请帮助我知道错误在哪里。

我在 list 中设置了以下权限; android:name="android.permission.INTERNET"和 android:name="android.permission.WRITE_EXTERNAL_STORAGE"

我的代码

private static void downLoad(){
    FTPClient client = new FTPClient();
    FileOutputStream fos = null;

    try {
        client.connect("ftp.doamin.com");
        client.login("8888", "8888");
String filePath = "/mnt/sdcard/download/CheckboxHTML.txt" ;
String fileName = "CheckboxHTML.txt";
fos = new FileOutputStream(filePath);
InputStream input = client.retrieveFileStream("/" + fileName);
byte[] data = new byte[1024];
int count  = input.read(data); 
while ((count = input.read(data)) != -1) {
      fos.write(data, 0, count);
}
fos.close();
      if(!client.completePendingCommand()) { 
      client.logout(); 
      client.disconnect(); 
      System.err.println("File transfer failed."); 
} 
    } catch (SocketException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
    }

}

感谢您的时间和兴趣。阿南斯。

最佳答案

据我所知。您应该通过调用 completePendingCommand() 并验证传输确实成功来完成文件传输。即您需要在 fos.clos() 下面添加调用函数。

fos.close();
client.completePendingCommand()

你也可以考虑这个,根据FTPClient.retrieveFileStream()的API,该方法在无法打开数据连接时返回null,此时你应该检查回复代码(例如getReplyCode(), getReplyString() , getReplyStrings()) 看看失败的原因。

关于Android FTPClient - retrieveFileStream() 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257639/

相关文章:

java - 与 FTPSClient 的 SFTP 连接失败

android - 无法在 Flutter 中使用 Firebase Auth 进行注册

Android 蓝牙 SPP 与 Galaxy S3

ssl - Jenkins “Publish over FTP plugin” 返回 “534 Policy requires SSL” 用于文件上传

java - 文件被复制到FTP服务器上而不是在java中移动

java - 为什么 java.util.Scanner.next() 返回空字符串?

java - Apache Commons Net FTPClient 中止文件存储

android - Firebase 存储上传任务继续从不触发

android - 关注结果后 Leanback Search fragment 关闭

java - 开源 Java FTP 客户端库