• Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】


    转:

    问题描述:

      使用org.apache.commons.net.ftp.FTPClient创建中文目录、上传中文文件名时,目录名及文件名中的中文显示为“??”。

    原因:

      FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码。

    解决方案:

    1.将中文的目录或文件名转为iso-8859-1编码的字符。参考代码:

    复制代码 代码如下:

       String name="目录名或文件名";

       name=new String(name.getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。


    2.设置linux环境变量

    复制代码 代码如下:

    export LC_ALL="zh_CN.GBK"
    export LANG="zh_CN.GBK"


    实例:

    复制代码 代码如下:


        public boolean upLoadFile(File file, String path, String fileName) throws IOException {
            boolean result = false;
            FTPClient ftpClient = new FTPClient();
            try {
                ftpClient.connect(confService.getConfValue(PortalConfContants.FTP_CLIENT_HOST));
                ftpClient.login(confService.getConfValue(PortalConfContants.FTP_CLIENT_USERNAME), confService
                        .getConfValue(PortalConfContants.FTP_CLIENT_PASSWORD));
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

                // make directory
                if (path != null && !"".equals(path.trim())) {
                    String[] pathes = path.split("/");
                    for (String onepath : pathes) {
                        if (onepath == null || "".equals(onepath.trim())) {
                            continue;
                        }

                        onepath=new String(onepath.getBytes("GBK"),"iso-8859-1");                   
                        if (!ftpClient.changeWorkingDirectory(onepath)) {
                            ftpClient.makeDirectory(onepath);
                            ftpClient.changeWorkingDirectory(onepath);
                        }
                    }
                }

                result = ftpClient.storeFile(new String(fileName.getBytes("GBK"),"iso-8859-1"), new FileInputStream(file));
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ftpClient.logout();
            }
            return result;
        }

    转自:http://www.jb51.net/article/65687.htm

  • 相关阅读:
    Q15格式表示负小数
    音频算法处理笔试面试题
    有符号和无符号之间的转化
    PE5 Smallest multiple
    PE3 Largest prime factor(最大素数因子)
    PE2 Even Fibonacci numbers(最大菲波那列偶数)
    PE 4 Largest palindrome product(最大回文)
    PE1 Multiples of 3 and 5
    Codevs高精度入门(减法、加法和乘法)解题报告
    计算机网络学习笔记(二) 计算机网络结构
  • 原文地址:https://www.cnblogs.com/libin6505/p/10583421.html
Copyright © 2020-2023  润新知