Описание проблемы:
Используйте org.apache.cmmons.net.ftp.ftpclient, чтобы создать китайский каталог и загрузить китайское имя файла, китайский каталог и имя файла отображаются как «??».
причина:
В протоколе FTP имя файла указано как ISO-8859-1, поэтому необходимо перенести имя каталога или имя файла.
Решение:
1. Поверните китайский каталог или имя файла в ISO-8859-1 кодированных символов. Справочный код:
Код кода копирования следующим образом:
String name = "Имя каталога или имя файла";
name = new String (name.getBytes ("gbk"), "iso-8859-1");
2. Установите код кода копии среды Linux следующим образом:
Экспорт lc_all = "zh_cn.gbk"
Экспорт lang = "zh_cn.gbk"
Пример:
Код кода копирования следующим образом:
Public boolean uploadfile (файл файл, путь строки, строковое файл) бросает ioexception {
Логический результат = false;
Ftpclient ftpclient = new ftpclient ();
пытаться {
ftpclient.connect (confservice.getConfvalue (portalConfcontants.ftp_client_host)) ;;);
ftpclient.login (confservice.getConfvalue (portalConfcontants.ftp_client_username), confservice, confservice
.getConfValue (portalConfcontants.ftp_client_password));
ftpclient.setfileType (ftpclient.binary_file_type);
// Сделать каталог
if (path! = null &&! "". equals (path.trim ())) {{
String [] pathes = path.split ("/");
для (String OnePath: Pather) {
ifpath == null || ". equals (onepath.trim ()) {)
продолжать;
}
OnePath = New String (OnePath.getBytes ("GBK"), "iso-8859-1");
if (! ftpclient.changeworkingDirectory (onepath)) {
ftpclient.mekedirectory (OnePath);
ftpclient.changeWorkingDirectory (OnePath);
}
}
}
Result = ftpClient.StoreFile (new String (fileName.getBytes ("gbk"), "iso-8859-1"), new FileInputStream (file));
} Catch (Exception e) {{
e.printstacktrace ();
} Окончательно {
ftpclient.logout ();
}
Результат возврата;
}