日期:2014-05-19  浏览次数:20739 次

Java中apache包中FTPClient读取win NT下的FTP服务器文件失败
org.apache.commons.net.ftp.FTPClient包中的ftpClient.listFiles()输出为0
问题介绍:
我用FTPClient方法访问异地搭建的win nt下的ftp服务器,ftpClient.listFiles()输出为0,ftpClient.listNames()为空,ftpClient.list()有值是150,无法获取到FTP服务器上某路径下的文件。
但是我手工登录(通过linux系统FTP对面的FTP服务器)FTP,相同的用户名、密码、路径是可以看到文件的,并且可以对该路径下的文件GET和PUT新文件。
具体的代码及日志是:
     org.apache.commons.net.ftp.FTPClient ftpClient = new FTPClient();

     FileOutputStream fos = null;
     FileInputStream fis=null;
     
     System.out.println("进入读取ftp...............");
     try {
         File file = new File(localStr);
         if (!file.exists()) {
            file.mkdirs();
        }

         Calendar cCalendar = Calendar.getInstance();
         long currTime = cCalendar.getTimeInMillis();
     ftpClient.setDataTimeout(120000);
     ftpClient.setBufferSize(204800);
     System.out.println("Host-====="+Host);
     ftpClient.setControlEncoding("gbk");
     config = new FTPClientConfig(FTPClientConfig.SYST_NT);
     config.setServerLanguageCode("zh");
     ftpClient.configure(config); 
     ftpClient.connect(Host);
         System.out.println(ftpClient.getReplyString());
 if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
this.mErrors.addOneError("连接未成功!");
return false;
 }
if (!ftpClient.login(user, user)) {

this.mErrors.addOneError("未登录成功!");
return false;
}          
 ftpClient.enterLocalPassiveMode();
 ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
         System.out.println(ftpClient.getReplyString());

         if(sign.equals("0")){
             /*对远程文件进行分析*/
             if (remoteStr.equals("")) {
                 System.out.println("请输入正确的文件名!");
                 return false;
             }

             String currDir = "";
             int i = remoteStr.lastIndexOf("/");
             currDir = remoteStr.substring(0, i);
             String Remotefile = remoteStr.substring(i + 1);