FTPClient 切换changeWorkingDirectory(),只有第一次成功

小带鱼 2016-05-13 04:36:25

int reply;
ftp.connect(server);
ftp.login(userName, userPassword);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
}
ftpClient.changeWorkingDirectory(path_1);
InputStream is_1 = ftpClient.retrieveFileStream(fileName_1);
System.out.println(is_1);

ftpClient.changeWorkingDirectory(path_2);
InputStream is_2 = ftpClient.retrieveFileStream(fileName_2);
System.out.println(is_2);

简单的通过 FTPClient 读取服务器上的文件,发现连续读取文件的时候,只有第一个文件changeWorkingDirectory能准确定位,并读取到文件。后面的都是NULL、
跟path和fileName无关,当我path_2和fileName_2跟path_1和fileName_1兑换位置,一样的效果,可以读出path_2的内容,path_1又不行了。
再网上查的,每次读取完毕之后is.close;以及ftp.competePendingCommand();或者ftp.changetoParentDirectory();都无效。
请各位老师帮忙。
...全文
14584 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
半路出家90 2017-03-01
  • 打赏
  • 举报
回复 1
我今天也遇到了这种问题,我是在A目录下载文件然后要切换回B目录下载,刚开始使用ftpClient.changeWorkingDirectory(B)不行,后来我在A中下载完毕后返回附件目录ftpClient.changeToParentDirectory();这样还是不行,后来研究了下返回2次ftpClient.changeToParentDirectory();调用2次,就OK了。(A和B都是平级的,上面还有一层目录)
丰王十 2016-05-31
  • 打赏
  • 举报
回复
public static void createDirs(FTPClient ftpClient, String remoteUpLoadPath) throws IOException { //根据路径逐层判断目录是否存在,如果不存在则创建 //1.首先进入ftp的根目录 ftpClient.changeWorkingDirectory("/"); String[] dirs = remoteUpLoadPath.split("/"); for (String dir : dirs) { //2.创建并进入不存在的目录 if (!ftpClient.changeWorkingDirectory(dir)) { ftpClient.mkd(dir); ftpClient.changeWorkingDirectory(dir); System.out.println("进入目录成功:"+dir); } } }
twqllq98849577 2016-05-16
  • 打赏
  • 举报
回复
有一个方法切换到根目录,接下来应该不难了吧
小带鱼 2016-05-15
  • 打赏
  • 举报
回复
那比如第一次的路径是dira/dirb/dirc/dird 那么第二次的change的时候怎么写?先../../../?再dirx/diry/dirz?
bluetear1 2016-05-14
  • 打赏
  • 举报
回复
楼上说的对。
twqllq98849577 2016-05-13
  • 打赏
  • 举报
回复
第二次change位置是基于第一次position的位置移动的,明白了吗?

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧