Java中FTPClient上傳中文目錄、中文文件名亂碼問題解決方法
問題描述:
使用org.apache.commons.net.ftp.FTPClient創(chuàng)建中文目錄、上傳中文文件名時(shí),目錄名及文件名中的中文顯示為“??”。
原因:
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"
實(shí)例:
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;
}
- JAVA中使用FTPClient實(shí)現(xiàn)文件上傳下載實(shí)例代碼
- java實(shí)現(xiàn)FTP文件上傳與文件下載
- JAVA技術(shù)實(shí)現(xiàn)上傳下載文件到FTP服務(wù)器(完整)
- Java通過FTP服務(wù)器上傳下載文件的方法
- JAVA SFTP文件上傳、下載及批量下載實(shí)例
- Java實(shí)現(xiàn)FTP文件與文件夾的上傳和下載
- java實(shí)現(xiàn)ftp上傳 如何創(chuàng)建文件夾
- Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1
- java使用ftp上傳文件示例分享
- java實(shí)現(xiàn)上傳文件到FTP
相關(guān)文章
Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)
這篇文章主要介紹了Java中使用WebUploader插件上傳大文件單文件和多文件的方法小結(jié)的相關(guān)資料,需要的朋友可以參考下2016-06-06
Java實(shí)現(xiàn)SHA1加密代碼實(shí)例
這篇文章給大家分享了Java實(shí)現(xiàn)SHA1加密的相關(guān)實(shí)例代碼,有興趣的朋友可以測試參考下。2018-07-07
SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例
這篇文章主要介紹了SpringBoot基于SpringSecurity表單登錄和權(quán)限驗(yàn)證的示例。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java節(jié)點(diǎn)流與字符流展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java自動(dòng)化工具Ant的基礎(chǔ)使用教程
這篇文章主要介紹了Java自動(dòng)化工具Ant的基礎(chǔ)使用教程,例子在Windows系統(tǒng)下操作演示,講解了Ant基本的文件操作和屬性,需要的朋友可以參考下2016-02-02
Java實(shí)現(xiàn)字符編碼轉(zhuǎn)換(utf-8/gbk)
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)字符編碼轉(zhuǎn)換工具,主要針對UTF-8和GBK兩種編碼格式,文中的示例代碼講解詳,需要的可以了解下2025-03-03
解決 java.lang.NoSuchMethodError的錯(cuò)誤
這篇文章主要介紹了解決 java.lang.NoSuchMethodError的錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2017-06-06

