本机用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参数,不知什么意思! 如果吧这一句去掉,照样能下载得到一个空的但文件名相同的文件。请各位论坛的前辈指教!

解决方案 »

  1.   

    怎么这么多人问同一个问题啊?
    1 你在循环里写同一个文件,这是怎么回事?
    2 我没看到你关闭文件。
    FileOutputStream fos = new FileOutputStream(file);
    ftpClient.retrieveFile(name, fos);
    fos.close(); // 加上这个
      

  2.   

    我也做过类似的FTP工具源代码和jar文件在我的blog里面有兴趣的话,可以下载下来看看http://jacky68147527.javaeye.com
      

  3.   

    Swing+FtpClient实现支持文件夹上传,支持重命名等功能界面预览