FTP上传中文文件到中文路径

来源:互联网 发布:鼎捷软件家具行业 编辑:程序博客网 时间:2024/05/17 06:45
package com.wq.test;
import java.io.File;    
import java.io.FileInputStream;    


import org.apache.commons.net.ftp.FTPClient;    
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;  


public class upftp {


  
    private  FTPClient ftp;      
    /**  
     *   
     * @param path 上传到ftp服务器哪个路径下     
     * @param addr 地址  
     * @param port 端口号  
     * @param username 用户名  
     * @param password 密码  
     * @return  
     * @throws Exception  
     */    
    private  boolean connect(String path,String addr,int port,String username,String password) throws Exception {      
        boolean result = false;      
        ftp = new FTPClient();      
        int reply;      
        ftp.connect(addr,port);      
        ftp.login(username,password);      
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);      
        reply = ftp.getReplyCode();      
        if (!FTPReply.isPositiveCompletion(reply)) {      
            ftp.disconnect();      
            return result;      
        }      
        ftp.changeWorkingDirectory(path);      
        result = true;      
        return result;      
    }      
    /**  
     *   
     * @param file 上传的文件或文件夹  
     * @throws Exception  
     */    
    private void upload(File file) throws Exception{      
        if(file.isDirectory()){           
            ftp.makeDirectory(file.getName());                
            ftp.changeWorkingDirectory(file.getName()); 
            String[] files = file.list();             
            for (int i = 0; i < files.length; i++) {      
                File file1 = new File(file.getPath()+"\\"+files[i] );      
                if(file1.isDirectory()){
                    upload(file1);      
                    ftp.changeToParentDirectory();      
                }else{                    
                    File file2 = new File(file.getPath()+"\\"+files[i]);
                    System.out.println(files[i]);
                    System.out.println(file2.getName());
                    FileInputStream input = new FileInputStream(file2);
                    String name;
                    name=new String(file2.getName().getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
                    ftp.storeFile(name, input);      
                    input.close();                            
                }                 
            }      
        }else{      
            File file2 = new File(file.getPath());      
            FileInputStream input = new FileInputStream(file2);      
            ftp.storeFile(file2.getName(), input);      
            input.close();        
        }      
    }      
   public static void main(String[] args) throws Exception{    
  upftp t = new upftp();   
  System.out.println(1111111);
  String name="公司文档/献血服务发展部/WeChat/Realse/V2.1.0.0";
  name=new String(name.getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
  System.out.println(name);
      t.connect(name, "172.0.0.34", 21, "0063", "111111");    
      File file = new File(args[0]);    
      t.upload(file);    
   }    


}


关键信息,所有中文都转码就ok了

0 0
原创粉丝点击