android/java ftp上传

这阵子在弄ftp上传,看网上好多例子,试了试普通的文档都可以,但是照片,视频什么的都不能查看。看了这篇文章我豁然开朗,应该加上ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);在这转载,希望帮助更多的人解惑。

 

 

使用common-net-ftp JAR包的FTPClient时几点要注意的:

1、使用以下代码:ftpclient.changeWorkingDirectory(parentPath);

     FTPFile[] files = ftpclient.listFiles();获取FTP服务器上的文件列表时parentPath的内容一般是以“/”开头的,如果没有需要补添上。

2、往FTP服务器上传文件时,使用以下代码:ftp.storeFile(fileName, fis);时fileName的内容不能是包含路径和文件名称的,而应该只包含文件名称,这也是InputStream类型的fis存在的理由。

3、上传文件时最好将文件类型设置为二进制文件(ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);),如果环境编码明确可设置相应的编码:(ftpclient.setControlEncoding("UTF-8");),如果不明确则不设置。

4、使用以下代码:ftp.rename(oldFileName, newFileName);将文件改名时2个参数也应该只包含文件名称,不能包含路径。

5、下载多个文件时,由于下载文件有2种方法:一是直接下载到本地,需要指明本地文件路径和名称;二是获取服务器文件的输入流,方便以流的形式对文件进行操作。注意:当使用获取流的方法下载多个文件时比较麻烦,必须遵循以下原则:获取服务器连接——获取输入流——关闭服务器连接——获取服务器连接——获取输入流——关闭服务器连接.....,使用直接下载到本地就不用这么麻烦可:获取服务器连接——(循环下载文件到本地)——关闭服务器连接。

参考以下代码:

流的方式:

FTPFile[] fileList = ftp.listFiles(path);

for (FTPFile file : fileList) {
    String name = file.getName();
              InputStream ins = downFile(ftp, name);
               /*将输入流存储起来方便后续处理*/                        

      closeFTPConnect(ftp);   //ftp是FTPClient的引用
               ftp = getFTPConnect(ftpFilePath);  //重新获取连接

          }

/*完了还要再关闭一次连接*/

直接下载:

for (FTPFile file : fileList) {
                       String name = file.getName();
                       File desFile = new File(desPath.concat(name));
                       FileOutputStream fos = new FileOutputStream(desFile);
                       ftp.retrieveFile(name, fos);
                   }

 

转载地址:http://blog.csdn.net/h345210sun/article/details/4704395

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值