وصف المشكلة:
استخدم org.apache.cmmons.net.ftp.ftpclient لإنشاء دليل صيني وتحميل اسم الملف الصيني ، يتم عرض الدليل الصيني واسم الملف كـ "؟؟".
سبب:
في بروتوكول FTP ، يتم تحديد اسم الملف على أنه ISO-8859-1 ، لذلك يجب نقل اسم الدليل أو اسم الملف.
حل:
1. حوّل الدليل الصيني أو اسم الملف إلى أحرف ISO-8859-1 المشفرة. الرمز المرجعي:
نسخ رمز رمز على النحو التالي:
اسم السلسلة = "اسم الدليل أو اسم الملف" ؛
name = new string (name.getBytes ("GBK") ، "ISO-8859-1") ؛
2. اضبط رمز كود نسخ البيئة Linux على النحو التالي:
تصدير lc_all = "zh_cn.gbk"
Export lang = "zh_cn.gbk"
مثال:
نسخ رمز رمز على النحو التالي:
refloadfile boolean public (ملف الملف ، مسار السلسلة ، اسم ملف السلسلة) يلقي ioException {
نتيجة منطقية = خطأ ؛
ftpClient ftpClient = new ftpclient () ؛
يحاول {
ftpclient.connect (confservice.getConfValue (portalConfContantantantantants.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 ())) {{
سلسلة [] مسارات = path.split ("/") ؛
لـ (String OnePath: Pather) {
Ifpath == null ||
يكمل؛
}
OnePath = New String (OnePath.getBytes ("GBK") ، "ISO-8859-1") ؛
if (! ftpClient.ChangeWorkingDirectory (OnePath)) {
ftpclient.makedirectory (OnePath) ؛
ftpClient.ChangeWorkingDirectory (OnePath) ؛
}
}
}
النتيجة = ftpclient.storefile (سلسلة جديدة (filename.getBytes ("GBK") ، "ISO-8859-1") ، FileInputStream (ملف) جديد) ؛
} catch (استثناء e) {{
E.PrintStackTrace () ؛
} أخيراً {
ftpclient.logout () ؛
}
نتيجة العودة
}