java ftp文件上传中文乱码问题
2017-03-10 15:59
651 查看
找了很多资料。
参考这篇靠谱
要点:
同样的 创建文件夹时中文乱码 处理
代码保存有道云
参考这篇靠谱
要点:
/** 本地字符编码 */ private static String LOCAL_CHARSET = "GBK"; // FTP协议里面,规定文件名编码为iso-8859-1 private static String SERVER_CHARSET = "ISO-8859-1"; // 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK). try { if (FTPReply.isPositiveCompletion(client.sendCommand( "OPTS UTF8", "ON"))) { LOCAL_CHARSET = "UTF-8"; } } catch (IOException e) { e.printStackTrace(); }
同样的 创建文件夹时中文乱码 处理
client.makeDirectory( new String(remoteDir.getBytes(LOCAL_CHARSET),SERVER_CHARSET));
//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建 public boolean CreateDirecroty(String remote) throws IOException { if(remote==null){ return false; } this.connectServer(); boolean success = true; String directory = remote + "/"; // String directory = remote.substring(0, remote.lastIndexOf("/") + 1); // 如果远程目录不存在,则递归创建远程服务器目录 if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) { int start = 0; int end = 0; if (directory.startsWith("/")) { start = 1; } else { start = 0; } end = directory.indexOf("/", start); String path = ""; String paths = ""; while (true) { // String subDirectory = new String(remote.substring(start, end).getBytes(LOCAL_CHARSET), SERVER_CHARSET); String subDirectory = remote.substring(start, end); logger.debug("目录编码:"+subDirectory); path = path + "/" + subDirectory; if (!existFile(path)) { // 处理编码 new String(subDirectory.getBytes(LOCAL_CHARSET),SERVER_CHARSET); if (makeDirectory(subDirectory)) { changeWorkingDirectory(subDirectory); } else { logger.debug("519创建目录[" + subDirectory + "]失败"); changeWorkingDirectory(subDirectory); } } else { changeWorkingDirectory(subDirectory); } paths = paths + "/" + subDirectory; start = end + 1; end = directory.indexOf("/", start); // 检查所有目录是否创建完毕 if (end <= start) { break; } } } closeConnect(); return success; } //判断ftp服务器文件是否存在 public boolean existFile(String path) throws IOException { boolean flag = false; FTPFile[] ftpFileArr = client.listFiles(path); if (ftpFileArr.length > 0) { flag = true; } return flag; } //创建目录 public boolean makeDirectory(String dir) { boolean flag = true; try { // new String(dir.getBytes(LOCAL_CHARSET),SERVER_CHARSET)) if (FTPReply.isPositiveCompletion(client.sendCommand( "OPTS UTF8", "ON"))) {// 开启服务器对UTF-8的支持,如果服务器支持就用UTF-8编码,否则就使用本地编码(GBK). LOCAL_CHARSET = "UTF-8"; } logger.debug(dir); logger.debug(""+new String(dir.getBytes(LOCAL_CHARSET),SERVER_CHARSET)); flag = client.makeDirectory(new String(dir.getBytes(LOCAL_CHARSET),SERVER_CHARSET)); if (flag) { logger.debug("创建文件夹" + dir + " 成功!"); } else { logger.debug("创建文件夹" + dir + " 失败!"); } } catch (Exception e) { e.printStackTrace(); } return flag; } //改变目录路径 public boolean changeWorkingDirectory(String directory) { boolean flag = true; try { flag = client.changeWorkingDirectory(directory); if (flag) { logger.debug("进入文件夹" + directory + " 成功!"); } else { logger.debug("进入文件夹" + directory + " 失败!"); } } catch (IOException ioe) { ioe.printStackTrace(); } return flag; }
代码保存有道云
相关文章推荐
- Java中FTP文件上传下载中文文件乱码问题
- Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
- java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题
- java上传文件到ftp-解决中文乱码的问题
- java中ftp文件上传和中文乱码解决
- java中ftp文件上传和中文乱码解决(一)
- 使用edtftpnet上传文件到Serv-U出现乱码的问题,并且不能创建中文文件名或文件夹。
- 解决,文件上传到 ftp 服务器,中文出现乱码问题
- Flex上传文件Java端解决中文乱码问题
- java中ftp文件上传和中文乱码解决
- FCKeditor for Java 中文文件名文件上传乱码问题
- java中ftp下载上传 解决中文文件上传下载中文乱码和文件上传失败下载文件为0kb
- 【Java】解决FTPClient上传中文目录出现中文名乱码问题
- Java文件上传下载删除(下载中文乱码问题)
- Java中FTPClient上传中文目录、中文文件名乱码问题解决方法
- java中ftp文件上传和中文乱码解决(二)
- Java中按照行读取和写入文件 日志常用操作 解决中文乱码问题
- 文件的上传\-\请求参数的中文乱码问题------11-10-20
- Java读取properties文件中文乱码问题的解决
- windows下ftp客户端上传东西到debian pureftpd server中文乱码的问题