في تطوير برنامج Java ، يتم استخدام FTP في كثير من الأحيان وغالبًا ما يتعامل معه ، مثل تحميل الملفات وتنزيلها على خادم FTP. تقدم لك هذه المقالة كيفية استخدام FTPClient في Jakarta Commons (في حزمة Commons-Net) لتحميل الملفات وتنزيلها.
1. تحميل الملفات
لن أقدم المبدأ ، يرجى قراءة الرمز مباشرة
/** * الوصف: ملف التحميل إلى خادم FTP * @version1.0 يوليو 27 ، 2008 4:31:09 PM بواسطة CUI Hongbao ([email protected]) إنشاء * url url ftp server for portta save ftp portage ftp portpar * @param filename تحميل إلى خادم FTP * param دفق إدخال الإدخال * return إرجاع true بنجاح ، وإلا إرجاع false */ publicstaticboolean uploadfile (url url string ، منفذ int ، اسم مستخدم السلسلة ، كلمة مرور السلسلة ، مسار السلسلة ، filename ، inputstream input) ftpclient ftp = new ftpclient () ؛ جرب {int reply ؛ ftp.connect (url ، port) ؛ // قم بتوصيل خادم FTP // إذا تم استخدام المنفذ الافتراضي ، يمكنك الاتصال مباشرة بخادم FTP باستخدام ftp.connect (url) ؛ ftp.login (اسم المستخدم ، كلمة المرور) ؛ // تسجيل الدخول = ftp.getReplyCode () ؛ if (! ftpreply.ispositivecOption (الرد)) {ftp.disconnect () ؛ العودة النجاح } ftp.ChangeWorkingDirectory (path) ؛ ftp.storefile (اسم الملف ، المدخلات) ؛ input.close () ؛ ftp.logout () ؛ النجاح = صحيح ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (ftp.isconnected ()) {try {ftp.disconnect () ؛ } catch (ioException ioe) {}}} return success ؛ } <pre> </pre> /*** الوصف: تحميل ملف إلى خادم FTP* @version1.0 يوليو 27 ، 2008 4:31:09 PM بواسطة cui hongbao ([email protected]) create* param url ftp server hostname* param port ftp server* @pararam use. Path FTP Server Save Save Directory* param تحميل اسم الملف إلى خادم FTP* param دفق إدخال الإدخال* return إرجاع TRUE بنجاح ، وإلا إلى خطأ*/public static boolean uploadfile (url url url ، int port ، string usernam الرد ؛ ftp.connect (url ، port) ؛ // قم بتوصيل خادم FTP // إذا تم استخدام المنفذ الافتراضي ، يمكنك الاتصال مباشرة بخادم FTP باستخدام ftp.connect (url) ؛ ftp.login (username ، password) ؛ {ftp.disconnect () ؛ return success ؛} ftp.ChangeWorkingDirectory (path) ؛ ftp.storefile (filename ، input) ؛ input.close () ؛ ftp.logout () ؛ success = true ؛} catch (ioException e) {E.PrintStackTrace () ؛} أخيرًا {if (ftp.isconnected ()) {try {ftp.disconnect () ؛} catch (ioexception ioe) {}}}
لنكتب مثالين صغيرين:
1. قم بتحميل الملف المحلي إلى خادم FTP ، الرمز كما يلي:
test publicvoid testuploadfromDisk () {try {fileInputStream in = new FileInputStream (ملف جديد ("d: /test.txt")) ؛ flag boolean = uploadfile ("127.0.0.1" ، 21 ، "test" ، "test" ، "d:/ftp" ، "test.txt" ، in) ؛ system.out.println (flag) ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ }} <pre> </pre> testpublic void testUploadFromDisk () {try {fileInputStream in = new FileInputStream (ملف جديد ("d: /test.txt")) ؛ boolean flag = uploadfile ("127.0.1 ، 21 ،" test "،" d:/ftp ". in) ؛ system.out.println (flag) ؛} catch (fileNotfoundException e) {E.PrintStackTrace () ؛}} 2. قم بإنشاء ملف على خادم FTP واكتب سلسلة إلى الملف
test publicvoid testuploadfromString () {try {inputStream input = new ByteArrayInputStream ("Test ftp" .getBytes ("UTF-8")) ؛ flag boolean = uploadfile ("127.0.0.1" ، 21 ، "test" ، "test" ، "d:/ftp" ، "test.txt" ، input) ؛ system.out.println (flag) ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ }}} <pre> </pre> testpublic void testuploadfromString () {try {inputStream input = new bytearrayinputStream ("test ftp" .getBytes ("utf-8") ؛ المدخلات) ؛ system.out.println (flag) ؛} catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛}} 2. قم بتنزيل الملف
رمز تنزيل الملفات من خادم FTP بسيط جدًا أيضًا ، يرجى الرجوع إليه على النحو التالي:
/*** الوصف: قم بتنزيل الملف من خادم FTP* version. يوليو ، ::: PM بواسطة CUI Hongbao ([email protected]) إنشاء* param url ftp server hostname* param port ftp server port* @param username ftp login accoun إلى المحلي بعد تنزيل * @return */ publicstaticboolean downfile (url url string ، منفذ int ، اسم مستخدم السلسلة ، كلمة مرور السلسلة ، سلسلة Remotepath ، اسم ملف السلسلة ، String localPath) {boolean success = false ؛ ftpclient ftp = new ftpclient () ؛ جرب {int reply ؛ ftp.connect (url ، port) ؛ // إذا تم استخدام المنفذ الافتراضي ، يمكنك الاتصال مباشرة بخادم FTP باستخدام ftp.connect (url) ؛ ftp.login (اسم المستخدم ، كلمة المرور) ؛ // تسجيل الدخول = ftp.getReplyCode () ؛ if (! ftpreply.ispositivecOption (الرد)) {ftp.disconnect () ؛ العودة النجاح } ftp.ChangeWorkingDirectory (remotepath) ؛ // Transfer to the FTP Server Directory ftpfile [] fs = ftp.listfiles () ؛ لـ (ftpfile ff: fs) {if (ff.getName (). equals (filename)) {file localfile = new file (localPath+"/"+ff.getName ()) ؛ OutputStream هو = fileOutputStream جديد (LocalFile) ؛ ftp.retrievefile (ff.getName () ، IS) ؛ is.close () ؛ }} ftp.logout () ؛ النجاح = صحيح ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {if (ftp.isconnected ()) {try {ftp.disconnect () ؛ } catch (ioException ioe) {}}} return success ؛ } <pre> </pre>