本机用Ser-U建了个ftp服务器端,本机防火墙允许21端口及Ser-U访问 测试程序如下,但下载不正常,如题所述 package ftp; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile; public class test { public test() {
//null
} public static void main(String[] arg0) {
FTPClient ftpClient = new FTPClient();
String hostName = "127.0.0.1";
String userName = "hello";
String password = "hello";
String remoteDir = "/Region_INFO/txt"; try {
ftpClient.connect(hostName,21);
ftpClient.setControlEncoding("GBK");
ftpClient.login(userName, password);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); FTPFile[] files = ftpClient.listFiles(remoteDir);
for (int i = 0; i <files.length; i++) {
String name = files[i].getName();
if (!(name.equals(".")) && !(name.equals(".."))){
System.out.println("name:" + name); File file = new File("C:\\FTP\\txt.txt");
FileOutputStream fos = new FileOutputStream(file);
ftpClient.retrieveFile(name, fos); System.out.println("down success");
}
} } catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
} 我弄不明白红色部分的name参数,不知什么意思! 如果吧这一句去掉,照样能下载得到一个空的但文件名相同的文件。请各位论坛的前辈指教!
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile; public class test { public test() {
//null
} public static void main(String[] arg0) {
FTPClient ftpClient = new FTPClient();
String hostName = "127.0.0.1";
String userName = "hello";
String password = "hello";
String remoteDir = "/Region_INFO/txt"; try {
ftpClient.connect(hostName,21);
ftpClient.setControlEncoding("GBK");
ftpClient.login(userName, password);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); FTPFile[] files = ftpClient.listFiles(remoteDir);
for (int i = 0; i <files.length; i++) {
String name = files[i].getName();
if (!(name.equals(".")) && !(name.equals(".."))){
System.out.println("name:" + name); File file = new File("C:\\FTP\\txt.txt");
FileOutputStream fos = new FileOutputStream(file);
ftpClient.retrieveFile(name, fos); System.out.println("down success");
}
} } catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
} 我弄不明白红色部分的name参数,不知什么意思! 如果吧这一句去掉,照样能下载得到一个空的但文件名相同的文件。请各位论坛的前辈指教!
解决方案 »
- java web后台都用什么框架或技术开发?
- java正则截取字符串
- 怎样验证用户已经登录?怎样实现匿名评论和登录评论
- 无法struts验证
- 想学习一下STRUTS SPRING HIBEMATE等等.请问我该先看点什么?或给我推荐本书
- 求救!!请问jsp如何实现数据导入与导出
- 连接池Bean是直接import还是要<%jsp:useBean ... scope="application">来用?
- servlet中如何取sessionid?谢谢!!
- 关于TOMCAT的设置,产生缓存文件.....
- mybatis+springmvc调用存储过程返回结果集调用报错问题
- 如何将当前页面的值赋给java变量
- 文本框与下拉框不重叠
1 你在循环里写同一个文件,这是怎么回事?
2 我没看到你关闭文件。
FileOutputStream fos = new FileOutputStream(file);
ftpClient.retrieveFile(name, fos);
fos.close(); // 加上这个