当前位置:编程学习 > JAVA >>

FTPClient从ftp上读取文件夹能读出来,但是读文件读不出来

代码如下:



String remoteHost = snDataSynchronizationParam.get("RemoteHost");// FTP地址
String port = snDataSynchronizationParam.get("RemotePort");// 端口
String remotePath = snDataSynchronizationParam.get("RemotePath");// FTP文件目录
String userName = snDataSynchronizationParam.get("User");// 用户名
String password = snDataSynchronizationParam.get("Pwd");// 密码


FTPClient ftpClient = new FTPClient();
String realPath=null;
InputStream is = null;
BufferedInputStream bfis = null;


ftpClient.connect(remoteHost, Integer.valueOf(port));
boolean isConnectSuccess = ftpClient.login(userName,password);
logger.debug("-----------isConnectSuccess:"+ isConnectSuccess);
if(isConnectSuccess){
//设置文件 2进制传输
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
//设置文件流传输
ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
//设置缓冲
ftpClient.setBufferSize(1024);
//设置文件编码
ftpClient.setControlEncoding("GBK");
//SYST_NT ---对应windows系统
FTPClientConfig ftpClientConfig = new FTPClientConfig(FTPClientConfig.SYST_NT);
//系统编码为中文
ftpClientConfig.setServerLanguageCode("zh");
fileName = new String(fileName.getBytes("GBK"),"ISO-8859-1");
logger.debug("-----------path1:"+ ftpClient.changeWorkingDirectory(remotePath));
FTPFile[] ftpFiles = ftpClient.listFiles( remotePath + "/" + fileName);
logger.debug("-----------ftpFiles.length:"+ftpFiles.length);



我用ftpClient.changeWorkingDirectory(remotePath)打印出来的是true.也就证明我能取到路径。但是我再用ftpFiles.length取值的时候就是0了,也就是说没有取出文件。

ftp上确认有此文件和文件夹。但是取不出文件的原因是什么吗?

之前这段代码我测试的时候是好使的,可以读出文件。最近再运行就找不到文件,谁知道原因,请告诉下啊!谢谢! --------------------编程问答-------------------- 国庆放假之前老板让搞定,大家帮忙! --------------------编程问答-------------------- windows系统不是应该用“\”吗? --------------------编程问答-------------------- RemotePath打出来看看 --------------------编程问答--------------------
引用 3 楼 fudongrifdr 的回复:
RemotePath打出来看看



我把RemotePath在logger.debug("-----------path1:"+ ftpClient.changeWorkingDirectory(remotePath));写死以后,返回的是ture.
在FTPFile[] ftpFiles = ftpClient.listFiles( remotePath + "/" + fileName);里写死以后再输出logger.debug("-----------ftpFiles.length:"+ftpFiles.length);打印出来的是0. --------------------编程问答--------------------
引用 2 楼 rainbowsix 的回复:
windows系统不是应该用“\”吗?


曾经试过在程序里用\\但是ftpFiles.length结果一样还是0.
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,