apache ftp相关问题整理
来源:互联网 发布:笨方法学python ex26 编辑:程序博客网 时间:2024/05/18 00:19
用apache的ftp功能,操作中文服务器时,经常遇到各种各样的问题:
比如ftpClient.listFiles() 为空问题(返回值为null),请参考我的另一篇帖子:http://blog.csdn.net/wangchsh2008/article/details/47101423
今天再总结几个问题,服务广大同行新手,也方便自己以后的工作。
第1个问题:
ftpClient.listFiles()有时候,不为null,但是总是返回空数组,比如
FTPFile[] files = ftpClient.listFiles();
日志打印files.length 始终为0,而且我发现如果用String[] names = ftp.listNames();
则names是有效的,能够返回正常的文件列表名称。
但是由于特殊需要,有时候我们还是需要FTPFile[] files = ftpClient.listFiles();
因为通过FTPFile我们可以更方便地判断其子是文件夹还是文件。(比如递归删除远程服务器上的所有文件及其文件夹)
试了很久,发现原因同ftpClient.listFiles() 为空问题,最终解决用的办法依旧是:http://blog.csdn.net/wangchsh2008/article/details/47101423
第2个问题:
ftpClient.changeWorkingDirectory(pathname)的路径问题
假设ftp服务器的目录结构为
app
|
|
test
|
| - - 20160718
| |
| | - - file1
| | - - file2
|
|
| - - 20160719
| |
| | - - file3
| | - - file4
|
|
| - - 20160720
| |
| | - - file5
| | - - file6
| | - - mydir
| |
| | -- file7
现在要获取所有文件file1 到file7。
一上来ftpClient.changeWorkingDirectory("app/test");
list之后,如果想到20160720目录的mydir下面取文件,那么如何cd呢?
这里需要考虑相对路径问题,第二次cd是建立在第一次cd基础上的。也就是说,第二次应该这样做:ftpClient.changeWorkingDirectory("20160720/mydir");
当然如果还有20160721目录且有子目录,那么需要进行第3次cd时,需要考虑当前client已经在什么目录。
拿递归删除远程ftp文件下所有子文件或文件夹为例:
//删除path及其下面所有文件 private void removeAll(FTPClient ftpClient,String pathname) throws IOException{ logger.info("当前remove路径:"+pathname); boolean flag = ftpClient.changeWorkingDirectory(pathname); logger.info("cd " + pathname + " " + flag); FTPFile[] files = ftpClient.listFiles(); if(files != null && files.length > 0){ logger.info("Its children length " + files.length); for(FTPFile child : files){ logger.info("处理 child " + child.getName()); if(child.isDirectory()){ removeAll(ftpClient,child.getName()); } else { ftpClient.deleteFile(child.getName()); } } } ftpClient.changeToParentDirectory(); ftpClient.removeDirectory(pathname); }
请注意每次cd到目录里,最后都会先cd回到父目录,代码为:
ftpClient.changeToParentDirectory();
ftpClient.removeDirectory(pathname);只能删除空的文件夹,删除成功或者失败,有对应的boolean类型返回值。
- apache ftp相关问题整理
- ftp开发相关资料整理
- FTP的相关问题
- apache重写相关整理如下
- FTP站点+FTP相关问题集
- linux下ftp相关问题
- Linux FTP Server 相关问题
- Apache配置相关问题
- apache 相关问题详解
- apache相关配置问题
- apache相关问题
- UITableView 相关问题整理
- MFC相关问题整理
- MTK_SDK 相关问题整理
- java相关问题整理
- VisualGDB相关问题整理
- 编码相关问题整理
- 集合相关问题整理
- hdu 4390 Number Sequence
- 一个程序员的过去10年的心得体会(时刻提醒自己)
- CodeForces 503A Bar
- 一次sql注入攻击
- ToggleButton 自定义控件的哪些坑
- apache ftp相关问题整理
- 百度指数词简单描述
- 一只小蜜蜂 hd 2044
- IIC总线时序详解
- 文章提取关键词_jieba(IF-IDF/TextRank)
- LintCode-两个链表的和sum
- 在VS中添加lib库的三种方法
- 【链接】Xcode升级之后安装插件管理工具
- 整形转换成字符串