1.功能: 需要实现ftp下载的一个小功能。2.问题: 能连接上ftp服务器,但不能下载,也不报错。3.试过的办法:   首先在dos下用ftp命令下载,可以下载,没有问题。
                 然后用相同的代码去下载其他ftp服务器的文件,也可以下载,没有问题。4.具体代码:
                
 package ftp2;  
     import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.io.IOException;   import java.io.OutputStream;   import java.net.SocketException;       import org.apache.commons.io.FileUtils;   import org.apache.commons.io.IOUtils;   import org.apache.commons.net.ftp.FTPClient;   import org.apache.commons.net.ftp.FTPClientConfig;   import org.apache.commons.net.ftp.FTPFile;   import org.apache.commons.net.ftp.FTPReply;       /**    * 使用commons的net包进行ftp链接. 相关包:commons-net-1.4.1.jar ;    * commons-io-1.2.jar;jakarta-oro-2.0.8.jar测试通过.可以列出ftp上的文件    * 通过把ftp服务器上的文件流连接到outSteam及可以把文件下载到本机的目录..限制如果目录为中文则需要处理.最好使用英文文件名    *     */  public class ListFtpFile {           private FTPClient ftpClient = new FTPClient();  
         private OutputStream outSteam = null;           /**        * ftp服务器地址        */      private String hostName = "192.168.5.1";       private int port = 21;           /**        * 登录名        */      private String userName = "yy";//匿名登录,空字符串不行           /**        * 登录密码        */      private String password = "yy_123456";//随便一个地址,我胡乱写一个也可以运行的           /**        * 需要访问的远程目录        */      private String remoteDir ="export/home/omc/netnumen/ems/ums-server/works/topo/topo1/runtime/ppus/uca.ppu/uca-mml.pmu/mmloutputfiles/";  
         /**        * 下载        */      private void download() {           try {               // 链接到ftp服务器               ftpClient.connect(hostName,port);               System.out.println("连接到ftp服务器:" + hostName + " 成功..开始登录");               // 登录.用户名 密码               boolean b = ftpClient.login(userName, password);               System.out.println("登录成功." + b);                   //          检测连接是否成功               int reply = ftpClient.getReplyCode();               if(!FTPReply.isPositiveCompletion(reply)) {                   ftpClient.disconnect();                   System.err.println("FTP server refused connection.");                   System.exit(1);               }                               ftpClient.setControlEncoding("GBK");               FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);//1.这个参数传的是不是ftp服务器的系统,如果是,怀疑有问题,服务器的系统是sun的。                 conf.setServerLanguageCode("zh");                FTPFile[] remoteFiles = ftpClient.listFiles(remoteDir);               if (remoteFiles != null) {                   for (int i = 0; i < remoteFiles.length; i++) {                       String name = remoteFiles[i].getName();                                            //下载                       File localFile = new File("c:/001/ftp/" + name);                       OutputStream is = new FileOutputStream(localFile);                       //retrieveFile的第一个参数需要是 ISO-8859-1 编码,并且必须是完整路径!                       String fileName = remoteDir + name;                       ftpClient.retrieveFile(new String(fileName.getBytes("GBK"),"ISO-8859-1"), is);                       is.close();                                               //打印  
                     long length = remoteFiles[i].getSize();                       String readableLength = FileUtils.byteCountToDisplaySize(length);                       System.out.println(name + ":\t"+remoteFiles[i].isFile()+"\t" + readableLength);                                           }               }                                   ftpClient.logout();           } catch (Exception e) {               e.printStackTrace();           } finally {               IOUtils.closeQuietly(outSteam);               try {                   ftpClient.disconnect();               } catch (IOException ioe) {                   ioe.printStackTrace();               }  
         }       }                        /**        * 测试        * */      public static void main(String[] args) {           ListFtpFile listFtpfiles = new ListFtpFile();           listFtpfiles.download();        }   }