博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ftpclient遍历目录文件,陷入死循环
阅读量:6279 次
发布时间:2019-06-22

本文共 1441 字,大约阅读时间需要 4 分钟。

hot3.png

有个小需求,需要用到遍历ftp服务器上文件,但是ftpclient.changeWorkingDirectory()没起作用,导致递归时候无限循环。

而且坑爹的是,这个ftpclient的API出错了,不报异常,它所有的信息都包装在ftpclient.getReplayString()里面,还要开发者去调用查看。

一开始我写的时候 ftpclient.changeWorkingDirectory();没有获取它的返回值,所以一直没发现这行代码内部出错了。调用ftpclient.getReplayString()打印了下,又是常见的550代码错误,就是什么文件名,目录名语义错误。550最常见了,肯定又是编码问题。果然,对路径名转下编码,从“GBK”转“iso-8859-1”,然后就行了。

完整可以运行代码如下:

public class FTPTest {	/**	 *@author z.wantong	 *@param args	 *@since 2016-9-20 下午2:56:33	 */	public static void main(String[] args) {				//遍历ftp目录		FTPClient ftp = FTPClientUtil.getFTPClientInstance();		travalDir(ftp, "/doc/");	}	public static void travalDir(FTPClient ftp , String ftpPath){				try {			ftpPath = new String(ftpPath.getBytes("GBK"),"iso-8859-1"); //关键是这行代码			if(ftp.changeWorkingDirectory(ftpPath)){				System.out.println("切换工作目录成功~");			}else{				System.out.print("切换工作目录失败~ ");				System.out.println(ftp.getReplyString());			}            //打印时,要把编码换回来,否则乱码			System.out.println("当前工作目录:"+ new String(ftp.printWorkingDirectory().getBytes("iso-8859-1"),"GBK"));			FTPFile [] files = ftp.listFiles();			for(FTPFile file : files){				if(file.isFile()){					System.out.println("文件是:"+file.getName());				}else if(file.isDirectory()){					String newPath = ftpPath+file.getName()+"/";					System.out.println("进入目录:"+ newPath);					travalDir(ftp, newPath);				}			}		} catch (IOException e) {			e.printStackTrace();		}			}}

 

转载于:https://my.oschina.net/wtzheng/blog/751568

你可能感兴趣的文章
PHP字符编码转换类3
查看>>
rsync同步服务配置手记
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>
webpack是如何实现前端模块化的
查看>>
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
package.json
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>