文件名中文乱码问题,传输binary文件, 由于FTPClient默认使用ASCII作为传输模式, 所有不能传输二进制文件. 通过ftp.setFileType(FTP.BINARY_FILE_TYPE)可以解决这个问题, 但是要在login以后执行. 因为这个方法要向服务器发送”TYPE I”命令.
1 2 | FTPClient ftp = new FTPClient(); ftpC.setFileType(FTPClient.BINARY_FILE_TYPE); |
以下这句暂时没有用到先留着:
开始知道能用FTPClient的listNames方法得到当前目录下所有文件的列表. 但是发现中文文件名是乱码. 默认情况下FTPClient使用UTF-8字符集作为和服务器通讯的编码集. 而我们的ftp服务器是在中文windowsXP上装的ServU. 所有使用GBK做为通讯编码集. 经过查找api文档, 我看到了setControlEncoding方法, 试了一下,果然好使. 于是这个问题就解决了:
1 | ftpC.setControlEncoding("GBK"); |
近期评论