Java中FTPClient上傳中文目錄、中文文件名亂碼問題解決方法
問題描述:
使用org.apache.commons.net.ftp.FTPClient創(chuàng)建中文目錄、上傳中文文件名時,目錄名及文件名中的中文顯示為“??”。
原因:
FTP協(xié)議里面,規(guī)定文件名編碼為iso-8859-1,所以目錄名或文件名需要轉(zhuǎn)碼。
解決方案:
1.將中文的目錄或文件名轉(zhuǎn)為iso-8859-1編碼的字符。參考代碼:
String name="目錄名或文件名";
name=new String(name.getBytes("GBK"),"iso-8859-1");// 轉(zhuǎn)換后的目錄名或文件名。
2.設(shè)置linux環(huán)境變量
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;
}
相關(guān)文章
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)的相關(guān)資料,需要的朋友可以參考下2016-06-06
SpringBoot基于SpringSecurity表單登錄和權(quán)限驗證的示例
這篇文章主要介紹了SpringBoot基于SpringSecurity表單登錄和權(quán)限驗證的示例。文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Java IO流之節(jié)點流與字符流的相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java節(jié)點流與字符流展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java實現(xiàn)字符編碼轉(zhuǎn)換(utf-8/gbk)
這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)字符編碼轉(zhuǎn)換工具,主要針對UTF-8和GBK兩種編碼格式,文中的示例代碼講解詳,需要的可以了解下2025-03-03
解決 java.lang.NoSuchMethodError的錯誤
這篇文章主要介紹了解決 java.lang.NoSuchMethodError的錯誤的相關(guān)資料,需要的朋友可以參考下2017-06-06

