ในโปรแกรม Java คุณมักจะต้องจัดการกับ FTP เช่นการอัปโหลดและดาวน์โหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP บทความนี้แนะนำวิธีการใช้ FTPClient ในจาการ์ต้าโดยย่อ (ในแพ็คเกจคอมมอนส์-เน็ต) เพื่ออัปโหลดและดาวน์โหลดไฟล์
แพ็คเกจขวดที่ใช้คือ:
Commons-Net -1.4.1.jar
จาการ์ตา-oro.jar
1. อัปโหลดไฟล์
ไฟล์ซอร์สโค้ดอัพโหลดไฟล์/*** คำอธิบาย: อัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ ftp* @ @เวอร์ชัน 1.0* @param url ftp เซิร์ฟเวอร์ชื่อโฮสต์* @param พอร์ตพอร์ตเซิร์ฟเวอร์ ftp* @param ชื่อผู้ใช้ ftp บัญชี* @param password ftp password* @param path ftp เซิร์ฟเวอร์ สำเร็จมิฉะนั้น false */Public Static Boolean UploadFile (String URL, // FTP Server HostName Port Int, // พอร์ตเซิร์ฟเวอร์ FTP String ชื่อผู้ใช้ชื่อ // รหัสผ่านบัญชี LOGINENT Account String // FTP SARTUMENT Server ftpClient ftp = new ftpClient (); ลอง {int ตอบกลับ; ftp.connect (url, พอร์ต); // เชื่อมต่อเซิร์ฟเวอร์ FTP // หากใช้พอร์ตเริ่มต้นคุณสามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ FTP โดย ftp.connect (URL); ftp.login (ชื่อผู้ใช้รหัสผ่าน); // เข้าสู่ระบบตอบกลับ = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (ตอบกลับ)) {ftp.disconnect (); กลับมาประสบความสำเร็จ } ftp.changeworkingDirectory (เส้นทาง); ftp.storefile (ชื่อไฟล์, อินพุต); input.close (); ftp.logout (); ความสำเร็จ = จริง; } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ftp.isconnected ()) {ลอง {ftp.disconnect (); } catch (ioexception ioe) {}} คืนความสำเร็จ; - นี่คือกรณีทดสอบสำหรับการอัปโหลดไฟล์:
/*** อัปโหลดไฟล์โลคัลไปยังเซิร์ฟเวอร์ ftp**/โมฆะสาธารณะ testuploadFromDisk () {ลอง {fileInputStream ใน = ใหม่ FileInputStream (ไฟล์ใหม่ ("d: /test.txt")); Boolean Flag = UploadFile ("127.0.0.1", 21, "ผู้ดูแลระบบ", "Zyuc2011", "ทดสอบ", "test.txt", ใน); System.out.println (Flag); } catch (filenotfoundException e) {e.printStackTrace (); }} / ** * สร้างไฟล์บนเซิร์ฟเวอร์ ftp และเขียนสตริงลงในไฟล์ * * / โมฆะสาธารณะ testuploadFromString () {ลอง {string str = "นี่คือสตริงที่จะเขียน!"; inputstream input = new ByteArrayInputStream (str.getBytes ("UTF-8")); Boolean Flag = UploadFile ("127.0.0.1", 21, "ผู้ดูแลระบบ", "Zyuc2011", "ทดสอบ", "test.txt", อินพุต); System.out.println (Flag); } catch (unsupportencodingexception e) {e.printstacktrace (); - 2. ไฟล์ดาวน์โหลด <br /> ไฟล์ดาวน์โหลดไฟล์
/*** คำอธิบาย: ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ ftp* @ @version1.0* @param url ftp เซิร์ฟเวอร์ชื่อโฮสต์* @param พอร์ตพอร์ต ftp พอร์ต ftp พอร์ต* @param username username ftp login accent* @param password ftp password* @param remotepath Public Static Boolean DownFile (String URL, // FTP Server HostName Int Port, // พอร์ตพอร์ตเซิร์ฟเวอร์ FTP String ชื่อผู้ใช้, // FTP LOGINAN Account String Password, // รหัสผ่านเข้าสู่ระบบ FTP สตริง remotepath, // เส้นทางที่สัมพันธ์กับ FTP Server ftpClient ftp = new ftpClient (); ลอง {int ตอบกลับ; ftp.connect (url, พอร์ต); // หากใช้พอร์ตเริ่มต้นคุณสามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ FTP โดยใช้ ftp.connect (URL); ftp.login (ชื่อผู้ใช้, รหัสผ่าน); // การตอบกลับเข้าสู่ระบบ = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (ตอบกลับ)) {ftp.disconnect (); กลับมาประสบความสำเร็จ } ftp.changeworkingDirectory (remotepath); // โอนไปยังไดเรกทอรีเซิร์ฟเวอร์ ftp ftpfile [] fs = ftp.listfiles (); สำหรับ (ftpfile ff: fs) {ถ้า (ff.getName (). เท่ากับ (ชื่อไฟล์)) {ไฟล์ localfile = ไฟล์ใหม่ (localPath+"/"+ff.getName ()); OutputStream คือ = ใหม่ fileOutputStream (localFile); ftp.retrievefile (ff.getName (), IS); is.close (); }} ftp.logout (); ความสำเร็จ = จริง; } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ftp.isconnected ()) {ลอง {ftp.disconnect (); } catch (ioexception ioe) {}} คืนความสำเร็จ; - นี่คือกรณีทดสอบสำหรับการดาวน์โหลดไฟล์:
/** * ดาวน์โหลดไฟล์บนเซิร์ฟเวอร์ ftp ไปยัง local * */public void testdownfile () {ลอง {boolean flag = downfile ("127.0.0.1", 21, "ผู้ดูแลระบบ", "zyuc2011", "ทดสอบ", "test.txt", "d:/"); System.out.println (Flag); } catch (exception e) {e.printstacktrace (); -ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน