retrievefile文件字节为0_Android的FtpClient的 - retrieveFileStream()始终返回null

I am a newbie to Android. I am trying download a file from ftp server to sdcard using Apache Commons FTPClient. The line InputStream input = client.retrieveFileStream("/" + fileName); always returns null. But the file is there in Ftp location. Kindly help me to know where the mistake is.

I have set the following permissions in my manifest; android:name="android.permission.INTERNET" and android:name="android.permission.WRITE_EXTERNAL_STORAGE"

My Code

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();

}

}

Thanks for your time and interest. Ananth.

解决方案

AFAIK. You are suppose to finalize file transfers by calling completePendingCommand() and verifying that the transfer was indeed successful. i.e. you need to add call the function below fos.clos().

fos.close();

client.completePendingCommand()

You may also consider this, according to the API for FTPClient.retrieveFileStream(), the method returns null when it cannot open the data connection, in which case you should check the reply code (e.g. getReplyCode(), getReplyString(), getReplyStrings()) to see why it failed.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值