|
因为业务需要,需要开发一个从ftp下载文件的功能。想着应该不难。用的是apache的commons的ftp组件。 用ftp连接都没有问题。只是在下载的时候出现了问题。 public void loadFile(String fileName,String folderPath) {
InputStream ins = null;
fileName = "a.txt";
try {
ftpClient.setBufferSize(1024);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
FileOutputStream fileOutputStream = new FileOutputStream(
folderPath + fileName);
ins = ftpClient.retrieveFileStream(fileName);//这里一直是null
if (null != ins) {
byte[] b = new byte[ins.available()];
while ((ins.read(b)) != -1) {
fileOutputStream.write(b);
}
fileOutputStream.close();
ins.close();
ftpClient.getReply();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
|
|
![]() 10分 |
为null那里只给了文件名啊,服务端的路径呢?
|
![]() |
我现在怀疑是我的工作目录出问题了,登录到FTP上之后会跳转到指定目录。但这个目录是根目录,我现在传”/”、”//”、”\”都不行。
public void connectServer(String ip, int port, String userName,
String userPwd, String path) {
ftpClient = new FTPClient();
try {
// 连接
ftpClient.connect(ip, port);
// 登录
ftpClient.login(userName, userPwd);
if (path != null && path.length() > 0) {
// 跳转到指定目录
ftpClient.changeWorkingDirectory(path);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
|
![]() |
因为是FTP根目录,我只给了文件名。 |
![]() |
以下代码就是问题代码。不知道为什么fclient.retrieveFileStream一直无法取出来
try {
FTPClient fclient = new FTPClient();
fclient.connect("127.0.0.1", 21);
fclient.login("root", "root");
System.out.println(fclient.isConnected());
fclient.changeWorkingDirectory(null);
fclient.setBufferSize(1024);
fclient.setFileType(FTP.BINARY_FILE_TYPE);
FileOutputStream fileOutputStream = new FileOutputStream("c:\a.txt");
InputStream ins = null;
ins = fclient.retrieveFileStream("20141201.txt");
if (null != ins) {
System.out.println("===========");
byte[] b = new byte[ins.available()];
while ((ins.read(b)) != -1) {
fileOutputStream.write(b);
}
fileOutputStream.close();
ins.close();
fclient.getReply();
}
} catch (Exception e) {
e.printStackTrace();
}
|
![]() 10分 |
登录之后 先做一下list 看看结果
|
![]() |
设置成被动模式就好了。但是现在问题很奇怪。测试debug模式的时候可以下载文件。但生产模式运行的时候就下载不了。http://bbs.csdn.net/topics/390944928?page=1#post-398618127 |
![]() 20分 |
以前搞过,现在忘记了,建议楼主一步一步排查,先看是否登录成功,再把当前目录和目录下的文件及文件夹都输出来。
|

