บทความนี้อธิบายวิธีการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP โดย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
เครื่องมือ:
แพ็คเกจ com.fz.common.util; นำเข้า java.io.datainputstream; นำเข้า java.io.dataoutputstream; นำเข้า java.io.fileinputstream; นำเข้า java.io.filenotfoundexception; นำเข้า Java.io.fileoutputstream; java.text.simpledateFormat; นำเข้า java.util.date; นำเข้า org.apache.commons.net.ftp.ftpclient; นำเข้า org.apache.commons.net.ftp.ftpreply; datainputStream getInput () {datainputStream d = null; ลอง {d = ใหม่ datainputStream (ใหม่ FileInputStream ("C: /wmc.dat")); กลับ D; } catch (filenotfoundexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } return d; } / ** * * @date 26 ก.ย. 2554 10:17:44 AM * @param Whites * @return * @author Zhangh * / Public Static Boolean creatwhiteManageFile (Byte [] Whites, String File) ลอง {d = ใหม่ dataOutputStream (ใหม่ fileOutputStream (ไฟล์)); d.write (ขาว); d.lush (); } catch (exception e) {// todo catch block catch ที่สร้างขึ้นอัตโนมัติส่งคืน false; // e.printstacktrace (); } return true; } / ** * * @date 16 ก.ย. 2011 4:39:22 PM * @param url * @param ชื่อผู้ใช้ * @param password * @param Path * @param filename * @param อินพุต * @return * @author zhangh * / public String, String, String, String เท็จ; ftpClient ftp = new ftpClient (); ลอง {int ตอบกลับ; ftp.connect (url); // ftp.connect (url, พอร์ต); // เชื่อมต่อกับเซิร์ฟเวอร์ FTP // หากใช้พอร์ตเริ่มต้นคุณสามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ FTP โดยใช้ ftp.connect (url); ftp.login (ชื่อผู้ใช้, รหัสผ่าน); // เข้าสู่ระบบตอบกลับ = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (ตอบกลับ)) {ftp.disconnect (); กลับมาประสบความสำเร็จ } ftp.changeworkingDirectory (เส้นทาง); ftp.storefile (ชื่อไฟล์, อินพุต); ftp.logout (); input.close (); ความสำเร็จ = จริง; } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {if (ftp.isconnected ()) {ลอง {ftp.disconnect (); } catch (ioexception ioe) {}} คืนความสำเร็จ; } / ** * * ชื่อวิธี: UploadFileftp * เมธอดคำอธิบาย: BlackList, Black User File อัปโหลดเซิร์ฟเวอร์ ftp * @param url * @param username * @param รหัสผ่าน * @param path * @param filename * @param อินพุต * @param input2 * @return uploadFileftp (url string, string username, รหัสผ่านสตริง, พา ธ สตริง, ชื่อไฟล์สตริง, อินพุตอินพุตอินพุต, อินพุตอินพุต 2) {วันที่วันที่ = วันที่ใหม่ (); SimpledateFormat formatter = ใหม่ simpledateFormat ("yyyy-mm-dd hh: mm: ss"); String time = formatter.format (วันที่); ความสำเร็จของบูลีน = FALSE; ftpClient ftp = new ftpClient (); ลอง {int ตอบกลับ; ftp.connect (URL); ftp.login (ชื่อผู้ใช้, รหัสผ่าน); // การตอบกลับเข้าสู่ระบบ = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (ตอบกลับ)) {ftp.disconnect (); กลับมาประสบความสำเร็จ } ftp.changeworkingDirectory (เส้นทาง); ftp.storefile (ชื่อไฟล์, อินพุต); ftp.storefile (ชื่อไฟล์ + เวลา, input2); ftp.logout (); input.close (); ความสำเร็จ = จริง; } catch (ioexception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ftp.isconnected ()) {ลอง {ftp.disconnect (); } catch (ioexception ioe) {}}} คืนความสำเร็จ; -อ่านไฟล์กำหนดค่า:
แพ็คเกจ com.fz.fzbike.domain; นำเข้า java.io.bufferedInputstream; นำเข้า java.io.fileinputstream; นำเข้า java.io.ioException; นำเข้า java.io.InputStream; นำเข้า java.util.properties; * คลาสถั่วที่ได้รับข้อมูลเซิร์ฟเวอร์ ftp * * @author wuxq * */คลาสสาธารณะ sysconstats {logger logger ส่วนตัว = logger.getLogger (sysconstats.class); สตริงคงที่สาธารณะ ftpserver; // ftp เซิร์ฟเวอร์ที่อยู่ IP ที่อยู่สตริงคงที่ public String ftpusername; // ftp เซิร์ฟเวอร์ชื่อผู้ใช้สตริงคงที่ public ftppassword; // รหัสผ่านผู้ใช้เซิร์ฟเวอร์ FTP ของผู้ใช้สตริงสแตติกสาธารณะ sysconstants.public_path.substring (0, sysconstants.public_path.length () - 7) + "/bidfileconfig.properties")); คุณสมบัติ prop = คุณสมบัติใหม่ (); prop.load (in); sysconstats.ftpserver = prop.getProperty ("ftpserver", "ไม่มี"); sysconstats.ftpusername = prop.getProperty ("ftpusername", "ไม่มี"); sysconstats.ftppassword = prop.getProperty ("ftppassword", "ไม่มี"); sysconstats.enveloperesultroot = prop.getProperty ("enveloperesultroot", "ไม่มี"); log.debug ("อ่านข้อมูลการกำหนดค่า FTP สำเร็จ!"); } catch (ioexception e) {log.debug ("ไม่สามารถอ่านข้อมูลการกำหนดค่า FTP!"); E.PrintStackTrace (); }} สตริงคงที่สาธารณะ getftpserver () {return ftpserver; } โมฆะคงที่สาธารณะ setFtPserver (สตริง ftpserver) {ftpserver = ftpserver; } สตริงคงที่สาธารณะ getftpusername () {return ftpusername; } โมฆะคงที่สาธารณะ setftPusername (สตริง ftpusername) {ftpusername = ftpusername; } สตริงคงที่สาธารณะ getftppAssword () {return ftppassword; } โมฆะคงที่สาธารณะ setftPPASSWORD (สตริง ftppAssword) {ftppassword = ftppassword; } สตริงคงที่สาธารณะ getenveloperesultroot () {return enveloperesultroot; } โมฆะคงที่สาธารณะ setenveloperesultroot (สตริง enveloperesultroot) {enveloperesultroot = enveloperesultroot; } โมฆะคงที่สาธารณะหลัก (สตริง args []) {sysconstats ใหม่ (); -อัปโหลดไฟล์ ftp:
แพ็คเกจ com.fz.fzbike.biz; นำเข้า java.io.bufferedInputstream; นำเข้า java.io.ByTearrayOutputStream; นำเข้า java.io.dataOutputStream; นำเข้า java.io.fileinputstream; นำเข้า Java.io.filenotfoundexception; java.text.decimalformat; นำเข้า com.enets.basesys.user.vo.uservo; นำเข้า com.enets.framework.assemble.requesthashnew; นำเข้า com.enets.framework.database.dbconnection; com.fz.fzbike.domain.sysconstats;/** * อัปโหลดรหัสบัตรไปยังเซิร์ฟเวอร์ ftp เพื่อสร้างไฟล์ค้างคาว * * @author wuxq 2011-09-28 */คลาสสาธารณะ UploadCardinnoftPaction 10:38:38 AM */ Public Void Uploadftp (RequestHashNew REH) {String CardType = Reh.Get ("CardType"). TOSTRING (); dbConnection dbc = reh.getdbc (); // ฐานข้อมูลลิงก์ dbc.endtran (); // ตรวจสอบว่ามันว่างเปล่าและอาจเป็นการสูญเสียรายงานออกจากการสูญเสียรายงานออกจากบัญชีดำและรับประเภทการ์ดตามรหัสบัตรถ้า (StringUtil.isnull (CardType)) {สตริง cardTypesql = "เลือก ci.card_type จาก lc_t_card_info ci CardType = dbc.getList0 (CardTypesql); } string top = "c:/upload/"; String file = top + "bmc.dat"; // กำหนดไดเรกทอรีเพื่อจัดเก็บสตริงแบล็กแบล็กแบล็กชั่วคราว Whitefile = top + "wmc.dat"; // กำหนดไดเรกทอรีเพื่อจัดเก็บสตริง bat bat bat ชั่วคราวชั่วคราว buserfile = top + "buser.dat"; // กำหนดไดเรกทอรีเพื่อจัดเก็บสตริงไฟล์ผู้ใช้สีดำชั่วคราว fileid = dbc.setoracleGlideValue ("lc_t_upgrade_file"); // รับหมายเลขซีเรียลของตารางไฟล์ // รับ ID ผู้ใช้ปัจจุบัน uservo uservo = reh.getUservo (); string userId = uservo.getUserId (); DecimalFormat df = decimalformat ใหม่ ("0.0"); if (cardType.equals ("7")) {StringBuffer bf = new StringBuffer (1024); bf .append ("เลือก card_in_no ที่แตกต่างกันจาก (เลือก tc.card_in_no") .append ("จาก lc_t_blacklist tb ซ้ายเข้าร่วม lc_t_card_info tc"). ("บน tb.card_id = tcard_id .Append ("tc.card_in_no จาก lc_t_card_loss cl ซ้ายเข้าร่วม") .append ("lc_t_card_info tc บน cl.card_id = tc.card_id โดยที่ tcard_type = 7 และ") และรายงานตารางบันทึก StringBuffer Brush = New StringBuffer (1024); bffer .Append ("เลือก ti.card_in_no จาก lc_t_card_info ti") .append ("โดยที่ ti.card_type = 7 และ ti.card_make_status = 2 คำสั่งโดย ti.card_in_no"); สตริง arr [] [] = dbc.getarr (bf.toString ()); // กำหนดอาร์เรย์เพื่อรับรหัสการ์ดที่เรียงลำดับในสตริงข้อมูลตารางบัตรฟัง [] [] = dbc.getarr (bffer.toString ()); upload_f (arr, ไฟล์); // รับหมายเลขเวอร์ชันของไฟล์แบล็กลิสต์ค่าเริ่มต้นคือ 1.0 สตริง vectorsql = "เลือก file_vesion จาก (เลือก row_number () มากกว่า (สั่งซื้อโดย t.file_vesion desc) num," + "t.file_vesion จาก lc_t_upgrade_file t String vesion = dbc.getList0 (vesionsQl); double ve = 1.0; // กำหนดตัวแปรหมายเลขรุ่น Blacklist ค่าเริ่มต้นคือ 1.0/ * * หากมีรุ่นเก่าในฐานข้อมูลรุ่นจะเพิ่มขึ้น 0.1 */ ถ้า (Stringutil.isnotNull (vesion)) {VE = (double.parsedouble (vesion) + 0.1); } vesion = df.format (ve); // เวอร์ชันบันทึกคำสั่ง sql สตริง bmcsql = "แทรกลงในค่า lc_t_upgrade_file (" + fileid + ", '" + ไฟล์ + "', '" + vesion + "', '2', sysdate," + userid + ")" dbc.insertdb (bmcsql); // คงอยู่กับฐานข้อมูล upload_f (listarr, whitefile); // รับหมายเลขเวอร์ชันของไฟล์ค้างคาว whitelisted ค่าเริ่มต้นคือ 1.0 สตริง vesionsql2 = "เลือก file_vesion จาก (เลือก row_number () มากกว่า (สั่งซื้อโดย t.file_vesion desc) num," + "t.file_vesion จาก lc_t_upgrade_file t String Vesion2 = dbc.getList0 (VesionsQl2); double ve2 = 1.0; // กำหนดตัวแปรหมายเลขรุ่น whitelist ค่าเริ่มต้นคือ 1.0/ * * หากมีรุ่นเก่าในฐานข้อมูลรุ่นจะเพิ่มขึ้น 0.1 */ ถ้า (stringutil.isnotNull (vesion2)) {ve2 = (double.parsedouble (vesion2) + 0.1); } สตริง bfileid = dbc.setoracleGlideValue ("lc_t_upgrade_file"); // รับหมายเลขซีเรียลของตารางไฟล์ vesion2 = df.format (VE2); // เวอร์ชันบันทึกคำสั่ง SQL สตริง bmcsql2 = "แทรกลงในค่า lc_t_upgrade_file (" + bfileid + ", '" + whitefile + "', '" + vesion2 + ",' 5 ', sysdate," + userid + ") dbc.insertdb (BMCSQL2); // คงอยู่ในฐานข้อมูล} else {StringBuffer bf2 = ใหม่ StringBuffer (1024); bf2 .Append ("เลือก card_in_no ที่แตกต่างกันจาก (เลือก tc.card_in_no") .append ("จาก lc_t_blacklist tb ซ้ายเข้าร่วม lc_t_card_info tc"). ("บน tb.card_id = tcard_id เลือก ") .append (" tc.card_in_no จาก lc_t_card_loss cl ซ้ายเข้าร่วม ") .append (" lc_t_card_info tc บน cl.card_id = tc.card_id ") T.CARD_IN_NO "); // บันทึกที่ไม่ใช่ผู้ดูแลระบบทั้งหมดในตารางบัญชีดำและรายงานตารางผู้ใช้ที่หายไป // กำหนดอาร์เรย์เพื่อรับรหัสบัตรผู้ใช้ที่เรียงลำดับในสตริงผู้ใช้สีดำ arr2 [] [] = dbc.getarr (bf2.toString () upload_f (arr2, buserfile); // รับหมายเลขเวอร์ชันของไฟล์ bat ผู้ใช้สีดำค่าเริ่มต้นคือ 1.0 สตริง hsersql = "เลือก file_vesion จาก (เลือก row_number () มากกว่า (สั่งซื้อโดย t.file_vesion desc) num," + "t.file_vesion จาก lc_t_upgrade_file t String vesion3 = dbc.getList0 (HusERSQL); double ves = 1.0; // กำหนดตัวแปรหมายเลขผู้ใช้สีดำค่าเริ่มต้นคือ 1.0/ * * หากมีรุ่นเก่าในฐานข้อมูลรุ่นจะเพิ่มขึ้น 0.1 */ ถ้า (stringutil.isnotNull (vesion3)) {ves = (double.parsedouble (vesion3) + 0.1); } vesion3 = df.format (ves); // เวอร์ชันบันทึกคำสั่ง SQL String HusERSQL = "แทรกลงในค่า LC_T_UPGRADE_FILE (" + FILEID + ", '" + BuserFile + "', '" + Vesion3 + "', '4', Sysdate," + UserId + ")" dbc.insertdb (husersql); // คงอยู่กับฐานข้อมูล}}/ ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ByteArrayOutputStream (); DataOrtputStream OS = ใหม่ dataOrtputStream (BAOS); ลอง {os.writeLong (long.reversebytes (อินพุต)); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } byte [] b = baos.tobytearray (); กลับ B; } / ** * * ชื่อเมธอด: UPLOAD_F เมธอดคำอธิบาย: อัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ ftp * * @param arr * @param ไฟล์ * โมฆะเวอร์ชัน 1.0 ผู้เขียน wuxq ต.ค. 8, 2011 11:37:27 am * / public คงที่ void upload_f (สตริง] [] arr, ไฟล์สตริง) {byte by ไบต์ [] ผลลัพธ์ = ไบต์ใหม่ [1]; if (stringUtil.isnotNull (arr)) {result = 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] = โดย [h]; } สำหรับ (int g = ตำแหน่ง; g <ตำแหน่ง+4; g ++) {ผลลัพธ์ [g] = รายการ [g - 4 * i]; } ตำแหน่ง = ตำแหน่ง + 4; }} บูลีนบูล = fileUtil.CreatWhitEmanageFile (ผลลัพธ์, ไฟล์); // สร้างไฟล์ BAT ถ้า (บูล) {// inputStreamReader ISR = ใหม่ inputStreamReader (ใหม่ // fileInputStream (ไฟล์)); inputStream inp = null; inputStream inp2 = null; ลอง {inp = ใหม่ bufferedInputStream (ใหม่ FileInputStream (ไฟล์)); inp2 = ใหม่ bufferedInputStream (ใหม่ FileInputStream (ไฟล์)); } catch (filenotfoundexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } // สกัดกั้นสตริงชื่อไฟล์ f = file.substring (10, file.length ()); // รับข้อมูลการกำหนดค่า FTP sysconstats sc = sysconstats ใหม่ (); fileutil.uploadfileftp (Sc.ftpserver, Sc.ftpusername, Sc.ftppassword, Sc.enveloperesultroot, F, Inp, INP2); -สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องกับ Java โปรดตรวจสอบหัวข้อของเว็บไซต์นี้: "สรุปไฟล์ Java และทักษะการดำเนินงานไดเรกทอรี", "การสอนเกี่ยวกับโครงสร้างข้อมูล Java และอัลกอริทึม", "บทสรุปของทักษะการดำเนินงานของ Java Dom Node" และ "สรุปทักษะการดำเนินงานแคช Java"
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน