解决ftp下载文件名乱码问题

原来用的是sun.net.ftp.FtpClient jar包,在java project中能解决乱码问题,在java web项目中未找到解决方案

现在改用org.apache.commons.net.ftp.FTPClient jar包,可以正常下载


public  boolean downFile(String fileName) {    
        boolean success = false;    
        FTPClient ftp = new FTPClient();    
        try {    
            int reply;    
            ftp.connect(ip, port);    
            //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器     
            ftp.login(username, password);//登录     
            reply = ftp.getReplyCode();    
            if (!FTPReply.isPositiveCompletion(reply)) {    
                ftp.disconnect();    
                return success;    
            }    
            ftp.changeWorkingDirectory(path);//转移到FTP服务器目录     
            FTPFile[] fs = ftp.listFiles();   
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
//            System.out.println(new String(fileName.getBytes("iso-8859-1"), "iso-8859-1")+"###");
            for(FTPFile ff:fs){ 
            	String f= new String(ff.getName().getBytes("iso-8859-1"), "utf-8");
                if(f.equals(fileName)){  
                    File localFile = new File(disk+"/"+f);    
                    OutputStream is = new FileOutputStream(localFile);     
                    ftp.retrieveFile(ff.getName(), is);    
                    is.close();    
                }    
            }    
                
            ftp.logout();    
            success = true;    
        } catch (IOException e) {    
            e.printStackTrace();    
        } finally {    
            if (ftp.isConnected()) {    
                try {    
                    ftp.disconnect();    
                } catch (IOException ioe) {    
                }    
            }    
        }    
        return success;    
    }  

原来用的sun.net.ftp.FtpClient jar包,java app项目没有乱码,java web项目乱码未找到解决方案

现在改为org.apache.commons.net.ftp.FTPClient jar包,文件名乱码问题已解决



你可能感兴趣的:(java)