تصف هذه المقالة طريقة تحميل الملفات إلى خادم FTP بواسطة Java. شاركه للرجوع إليه ، على النحو التالي:
أدوات:
package com.fz.common.util ؛ استيراد java.io.datainputStream ؛ استيراد java.io.dataoutputStream ؛ استيراد java.io.fileinputstream ؛ import java.io.filenotfoundexception ؛ import java.io java.text.simpleDateFormat ؛ استيراد java.util.date ؛ استيراد org.apache.commons.net.ftp.ftpclient ؛ استيراد org.apache.commons.net.ftp.ftpreply datainputStream getInput () {datainputStream d = null ؛ حاول {d = new datainputStream (جديد fileInputStream ("c: /wmc.dat")) ؛ العودة د ؛ } catch (fileNotfoundException e) {// todo catch catch e.printstacktrace () ؛ } العودة د ؛ } / ** * * date 26 سبتمبر ، 2011 10:17:44 AM * param whites * return * author Zhangh * / public static boolean createManageFile (byte [] whites ، string file) {dataoutputstream d ؛ حاول {d = new dataOutputStream (fileOutputStream (ملف جديد)) ؛ D.Write (البيض) ؛ d.flush () ؛ } catch (استثناء e) {// todo acto catch block return false ؛ // e.printstacktrace () ؛ } إعادة صواب ؛ } / ** * * date سبتمبر 16 ، 2011 4:39:22 PM * param url * param username * param password * param path * param filename * @param input * @return * uthor zhangh * / public static boolean uploadfile (String url ، string userame ، strep ftpclient ftp = new ftpclient () ؛ جرب {int reply ؛ ftp.connect (url) ؛ // ftp.connect (url ، port) ؛ // قم بالاتصال بخادم FTP // إذا تم استخدام المنفذ الافتراضي ، فيمكنك الاتصال مباشرة بخادم FTP باستخدام ftp.connect (url) ؛ ftp.login (اسم المستخدم ، كلمة المرور) ؛ // تسجيل الدخول في الرد = ftp.getReplyCode () ؛ if (! ftpreply.ispositivecOption (الرد)) {ftp.disconnect () ؛ العودة النجاح } ftp.ChangeWorkingDirectory (path) ؛ ftp.storefile (اسم الملف ، المدخلات) ؛ ftp.logout () ؛ input.close () ؛ النجاح = صحيح ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (ftp.isconnected ()) {try {ftp.disconnect () ؛ } catch (ioException ioe) {}} return success ؛ } / ** * * اسم الطريقة: UploadFileftp * الطريقة الوصف: Black User File Upload FTP Server * param url * param username * param password * param path * param filenam UploadFileftp (url url سلسلة ، اسم المستخدم ، كلمة مرور السلسلة ، مسار السلسلة ، اسم ملف السلسلة ، إدخال inputStream ، inputStream input2) {Date Date = new Date () ؛ simpledateformat formatter = new SimpleDateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ وقت السلسلة = formatter.format (التاريخ) ؛ نجاح منطقي = خطأ ؛ ftpclient ftp = new ftpclient () ؛ جرب {int reply ؛ ftp.connect (url) ؛ ftp.login (اسم المستخدم ، كلمة المرور) ؛ // تسجيل الدخول = ftp.getReplyCode () ؛ if (! ftpreply.ispositivecOption (الرد)) {ftp.disconnect () ؛ العودة النجاح } ftp.ChangeWorkingDirectory (path) ؛ ftp.storefile (اسم الملف ، المدخلات) ؛ ftp.storefile (filename + time ، input2) ؛ ftp.logout () ؛ input.close () ؛ النجاح = صحيح ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (ftp.isconnected ()) {try {ftp.disconnect () ؛ } catch (ioException ioe) {}}} return success ؛ }}اقرأ ملف التكوين:
package com.fz.fzbike.domain ؛ import java.io.bufferedInputStream ؛ import java.io.fileinputstream ؛ import java.io.ioException ؛ import java.io.inputstream ؛ import java.util.properties com.enets.framework.util.sysconstants ؛/** * فئة الفول التي تحصل على معلومات خادم FTP * * Author wuxq * */sysconstats العامة العامة {private static logger log = logger.getLogger (sysconstats.class) ؛ السلسلة الثابتة العامة ftpserver ؛ // ftp server عنوان IP IP العام public ftpusername ؛ // ftp server username static string public ftppassword ؛ sysconstants.public_path.substring (0 ، sysconstants.public_path.length () - 7) + "/bidbileconfig.properties")) ؛ Properties Prop = New Properties () ؛ prop.load (in) ؛ sysconstats.ftpserver = prop.getProperty ("ftpserver" ، "none") ؛ sysconstats.ftpusername = prop.getProperty ("ftpuserName" ، "none") ؛ sysconstats.ftppassword = prop.getProperty ("ftppassword" ، "none") ؛ sysconstats.enveloperesultrotot = prop.getProperty ("inviversultroot" ، "none") ؛ log.debug ("اقرأ معلومات تكوين FTP بنجاح!") ؛ } catch (ioException e) {log.debug ("فشل في قراءة معلومات تكوين FTP!") ؛ E.PrintStackTrace () ؛ }} السلسلة الثابتة العامة getftpserver () {return ftpserver ؛ } setftpspserver public static void (سلسلة ftpserver) {ftpserver = ftpserver ؛ } سلسلة ثابتة getftpusername () {return ftpusername ؛ } public static void setftpusername (سلسلة ftpusername) {ftpUserName = ftpusername ؛ } السلسلة الثابتة العامة getftppassword () {return ftppassword ؛ } public static void setftppassword (String ftppassword) {ftppassword = ftppassword ؛ } السلسلة الثابتة العامة getEnveloperEsultrotoT () {return arviversultrotoT ؛ } public static void setenveloperesultrot (envordesultrotot) {envoreSultRoot = inviveleresultrooot ؛ } public static void main (string args []) {new sysconstats () ؛ }}تحميل ملف FTP:
package com.fz.fzbike.biz ؛ import java.io.bufferedInputStream ؛ import java.io.bytearrayoutputstream ؛ import java.io.dataoutputstream ؛ impore java.text.decimalformat ؛ استيراد com.enets.basesys.user.vo.uservo ؛ استيراد com.enets.framework.assemble.requesthashnew com.fz.fzbike.domain.sysconstats ؛/** * قم بتحميل رمز البطاقة إلى خادم FTP لإنشاء ملف BAT * * Author wuxq 2011-09-28 */public class uploadcardinnoftpaction {/** 10:38:38 am */ public void uploadftp (requestHashNew Reh) {String cardtype = reh.get ("cardtype"). toString () ؛ DBConnection DBC = REH.GETDBC () ؛ // Link DATABASE DBC.ENDTRAN () ؛ // تحديد ما إذا كان فارغًا وقد يكون خسارة في التقرير ، والخروج من فقدان التقرير ، والخروج من القائمة السوداء ، والحصول على نوع البطاقة بناءً على معرف البطاقة إذا كان (stringutil.isnull (cardtype)) {String cardTypesQl = "SELECT CI.CARD_TYPE من lc_t_card_info ci where ci.card_id =" + reh. CardType = dbc.getList0 (cardtypesql) ؛ } String Top = "C:/Upload/" ؛ ملف سلسلة = TOP + "BMC.DAT" ؛ // حدد دليلًا لتخزين سلسلة BAT BAT مؤقتة مؤقتة WhiteFile = TOP + "WMC.DAT" ؛ // تحديد دليل لتخزين سلسلة ملفات الخفافيش ذات القائمة البيضاء المؤقتة busterfile = top + "buster.dat" ؛ . String userId = uservo.getuserId () ؛ decimalformat df = new decimalformat ("0.0") ؛ if (cardtype.equals ("7")) {StringBuffer bf = new StringBuffer (1024) ؛ bf .append ("حدد card_in_no متميز من (SELECT TC.CARD_IN_NO") .Append ("من lc_t_blacklist tb اليسرى الانضمام إلى lc_t_card_info tc") .append ("on tb.card_id = tc.card_id where tc.card_type = 7"). .append ("tc.card_in_no من LC_T_CARD_LOSS CL LEFT JOON") .Append ("LC_T_CARD_INFO TC على cl.card_id = tc.card_id حيث tc.card_type = 7 و"). جدول سجل stringbuffer Brush = جديد StringBuffer (1024) ؛ bffer .append ("حدد ti.card_in_no من lc_t_card_info ti") .append ("حيث ti.card_type = 7 و ti.card_make_status = 2 order by ti.card_in_no") ؛ arr [] [] = dbc.getarr (bf.toString ()) ؛ . expload_f (arr ، file) ؛ // احصل على رقم الإصدار من ملف BATLILL BAT ، القيمة الأولية هي 1.0 سلسلة من متجاورات stringql = "حدد file_vesion من (SELECT ROW_NUMBER () Over (order by t.file_vesion desc) num ،" + "t.file_vesion من lc_t_upgrade_file حيث t.file_type = 2) حيث num = 1" ؛ String Vesion = dbc.getList0 (VesionSql) ؛ Double VE = 1.0 ؛ // تحديد متغير رقم إصدار القائمة السوداء ، تكون القيمة الأولية هي 1.0/ * * * إذا كان هناك إصدار قديم في قاعدة البيانات ، فسيتم زيادة الإصدار بمقدار 0.1 */ if (stringutil.isnotnull (vesion)) {ve = (double.parsedouble (vesion) + 0.1) ؛ } vesion = df.format (ve) ؛ // سجل الإصدار SQL STRING BMCSQL = "Insert في قيم LC_T_UPGRADE_FILE (" + fileid + "،" + file + "،" + vesion + "، '2' ، sysdate ،" + userid + ") ؛ dbc.insertdb (BMCSQL) ؛ // تستمر في قاعدة البيانات upload_f (listarr ، whitefile) ؛ // احصل على رقم الإصدار من ملف BAT ذي القائمة البيضاء ، والقيمة الأولية هي 1.0 سلسلة Vesionsql2 = "حدد file_vesion من (SELECT ROW_NUMBER () Over (order by t.file_vesion desc) num ،" + "t.file_vesion من lc_t_upgrade_file t.file_type = 5) حيث num = 1" ؛ String Vesion2 = dbc.getList0 (VesionSql2) ؛ Double VE2 = 1.0 ؛ // تحديد متغير رقم الإصدار الأبيض ، القيمة الأولية هي 1.0/ * * * إذا كان هناك إصدار قديم في قاعدة البيانات ، فسيتم زيادة الإصدار بمقدار 0.1 */ if (stringutil.isnotnull (Vesion2)) {VE2 = (double.parsedouble (Vesion2) + 0.1) ؛ } string bfileId = dbc.setoracleglidevalue ("lc_t_upgrade_file") ؛ // احصل على الرقم التسلسلي لجدول الملف Vesion2 = df.format (VE2) ؛ // سجل الإصدار SQL STRING BMCSQL2 = "أدخل في LC_T_UPGRADE_FILE (" + BfileId + "،" + Whitefile + "" ، " + Vesion2 +" ، "5" ، sysdate ، " + userid +") ؛ dbc.insertdb (bmcsql2) ؛ // تستمر في قاعدة البيانات} ell {stringBuffer bf2 = new StringBuffer (1024) ؛ bf2 .append ("حدد card_in_no متميز من (SELECT TC.CARD_IN_NO") .Append ("من lc_t_blacklist tb اليسر .append ("tc.card_in_no من LC_T_CARD_LOSS CL LEFT JOON") .Append ("LC_T_CARD_INFO TC على cl.card_id = tc.card_id") .append ("where tc.card_type <> 7 و cl.whether_effective"). سجلات غير ANDMINISTRART في جدول القائمة السوداء وأبلغت جدول المستخدم المفقود // حدد صفيفًا لتلقي رموز بطاقة المستخدم المرتبة في سلسلة المستخدمين السوداء ARR2 [] = dbc.getarr (BF2.TOSTRING ()) ؛ TOPLOAD_F (ARR2 ، BUSERFILE) ؛ // احصل على رقم الإصدار من ملف BAT USER الأسود ، القيمة الأولية هي 1.0 سلسلة HSERSQL = "SELECT file_vesion من (SELECT ROW_NUMBER () Over (order by t.file_vesion desc) num ،" + "t.file_vesion من lc_t_upgrade_file حيث t.file_type = 4) حيث num = 1" ؛ String vesion3 = dbc.getList0 (husersql) ؛ Double VES = 1.0 ؛ // تحديد متغير رقم إصدار المستخدم الأسود ، تكون القيمة الأولية هي 1.0/ * * * إذا كان هناك إصدار قديم في قاعدة البيانات ، فسيتم زيادة الإصدار بمقدار 0.1 */ if (stringutil.isnotnull (vesion3)) {ves = (double.parsedouble (vesion3) + 0.1) ؛ } vesion3 = df.format (VES) ؛ // سجل الإصدار SQL string string husersql = "insert في قيم LC_T_UPGRADE_FILE (" + fileId + "،" + buserfile + "،" + vesion3 + "، '4' ، sysdate ،" + userid + ") ؛ dbc.insertdb (husersql) ؛ // تستمر في قاعدة البيانات}}/ ** * * الأسلوب الاسم: Writelong طريقة الوصف: اكتب عدد صحيح طويل إلى دفق الإخراج * * @param byte [] الإصدار 1.0 مؤلف wuxq 28 سبتمبر ، 2011 10:54:58 am */ public byte bytearrayoutputstream () ؛ DataOutputStream OS = جديد DataOutputStream (BAOS) ؛ حاول {os.writelong (long.reverseBytes (input)) ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ } byte [] b = baos.tobytearray () ؛ العودة ب ؛ } / ** * * اسم الطريقة: UPLOAD_F الطريقة الوصف: تحميل الملف على خادم FTP * * param arr * param file * void الإصدار 1.0 مؤلف WUXQ 8 أكتوبر ، 2011 11:37:27 AM * / public static void upload_f (] byte [] النتيجة = بايت جديد [1] ؛ if (stringUtil.isnotnull (arr)) {result = new byte [arr.length * 4] ؛ الموضع int = 0 ؛ لـ (int i = 0 ؛ i <arr.length ؛ i ++) {by = writelong (long.parselong (arr [i] [0])) ؛ قائمة البايت [] = بايت جديد [4] ؛ لـ (int h = 0 ؛ h <list.length ؛ h ++) {list [h] = by [h] ؛ } لـ (int g = position ؛ g <position+4 ؛ g ++) {result [g] = list [g - 4 * i] ؛ } الموضع = الموضع + 4 ؛ }} boolean bool = fileutil.creatwhitemanageFile (النتيجة ، ملف) ؛ // إنشاء ملف BAT إذا (bool) {// inputStreamReader isr = new inputStreamReader (new // fileinputstream (file)) ؛ InputStream INP = NULL ؛ inputStream INP2 = null ؛ حاول {inp = new BufferEdInputStream (FileInputStream جديد (ملف)) ؛ INP2 = جديد bufferedInputStream (FileInputStream جديد (ملف)) ؛ } catch (fileNotfoundException e) {// todo catch catch e.printstacktrace () ؛ } // اعتراض سلسلة اسم الملف f = file.substring (10 ، file.length ()) ؛ // الحصول على معلومات تكوين FTP sysconstats sc = new sysconstats () ؛ fileutil.uploadfileftp (sc.ftpserver ، sc.ftpusername ، sc.ftppassword ، sc.enveloperesultrot ، f ، inp ، inp2) ؛ }}}لمزيد من المعلومات حول المحتوى المتعلق بـ Java ، يرجى مراجعة موضوعات هذا الموقع: "ملخص ملفات Java ومهارات تشغيل الدليل" ، "تعليمي حول هياكل بيانات Java وخوارزميات" ، "ملخص لمهارات تشغيل عقدة Java DOM" و "ملخص لمهارات تشغيل Java Cache"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.