1. ดาวน์โหลดรหัสลูกค้า
แพ็คเกจ Javadownload; นำเข้า Java.io.ByTeArrayOutputStream; นำเข้า Java.io.File; นำเข้า Java.io.FileOutputStream; นำเข้า Java.io.InputStream; นำเข้า java.net.httpurlconnection; นำเข้า java.net.url; /** * @description ส่งออกเครื่องเสมือน * @author wxt * @version 1.0 * @since */คลาสสาธารณะ getvm {/** * ทดสอบ * @param args */โมฆะสาธารณะคง ไบต์ [] btimg = getvmfromnetbyurl (url); if (null! = btimg && btimg.length> 0) {system.out.println ("อ่านถึง:" + btimg.length + "byte"); string filename = "ygserver"; writeimagetodisk (btimg, ชื่อไฟล์); } else {system.out.println ("ไม่ได้รับเนื้อหาจากการเชื่อมต่อนี้"); }}/*** เขียน vm ไปยังดิสก์* @param vm ข้อมูลสตรีม* @param ชื่อไฟล์ชื่อไฟล์เมื่อบันทึก*/สาธารณะคงที่ public writeimagetodisk (byte [] vm, string filename) {ลอง {ไฟล์ไฟล์ = ไฟล์ใหม่ ("./" + ชื่อไฟล์); FileOutputStream FOPS = ใหม่ fileOutputStream (ไฟล์); fops.write (VM); fops.flush (); fops.close (); System.out.println ("ดาวน์โหลดเสร็จสมบูรณ์"); } catch (exception e) {e.printstacktrace (); }} / *** รับข้อมูลจากที่อยู่* @param strurl การเชื่อมต่อเครือข่ายที่อยู่* @return* / public Static byte [] getvmfromnetbyurl (String strurl) {ลอง {url url = url ใหม่ (strurl); httpurlConnection conn = (httpurlconnection) url.openconnection (); conn.setRequestMethod ("รับ"); conn.setConnectTimeout (5 * 1000); inputstream instream = conn.getInputStream (); // รับข้อมูลผ่านอินพุตสตรีมไบต์ [] btimg = readinputstream (instream); // ข้อมูลไบนารีที่ได้รับส่งคืน btimg; } catch (exception e) {e.printstacktrace (); } return null; } / *** รับข้อมูลจากสตรีมอินพุต* @param Instram Input Stream* @return* @throws Exception* / สาธารณะคงที่ [] readInputStream (InputStream Instream) โยนข้อยกเว้น ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024]; int len = 0; ในขณะที่ ((len = stream.read (บัฟเฟอร์))! = -1) {outstream.write (บัฟเฟอร์, 0, len); } stream.close (); return outstream.tobytearray (); -รหัสด้านบนเหมาะสำหรับการดาวน์โหลดไฟล์ขนาดเล็กเท่านั้น หากคุณดาวน์โหลดไฟล์ขนาดใหญ่ข้อยกเว้นในเธรด "Main" java.lang.outofMemoryError: ข้อผิดพลาดในอวกาศ Java Heap ดังนั้นหากคุณต้องการแก้ไขรหัสด้านบนเมื่อดาวน์โหลดไฟล์ขนาดใหญ่รหัสจะเป็นดังนี้:
แพ็คเกจ Javadownload; นำเข้า Java.io.ByTeArrayOutputStream; นำเข้า Java.io.File; นำเข้า Java.io.FileOutputStream; นำเข้า Java.io.InputStream; นำเข้า java.net.httpurlconnection; นำเข้า java.net.url; /** * @description ส่งออกเครื่องเสมือน * @author wxt * @version 1.0 * @since */คลาสสาธารณะ getBigFile {/** * ทดสอบ * @param args */โมฆะคงที่สาธารณะ (สตริง [] args) {string url = "http://192.168. String filename = "yserver"; getvmfromnetbyurl (url, ชื่อไฟล์); } / *** ดาวน์โหลดไฟล์ตามที่อยู่* @param strurl การเชื่อมต่อเครือข่ายที่อยู่* @param ชื่อไฟล์จัดเก็บชื่อไฟล์ดาวน์โหลด* / โมฆะคงที่สาธารณะ getvmfromnetbyurl (String strurl, String filename) {ลอง {url url = url ใหม่ (strurl); httpurlConnection conn = (httpurlconnection) url.openconnection (); conn.setRequestMethod ("รับ"); conn.setConnectTimeout (5 * 1000); InputStream Instream = conn.getInputStream (); // รับข้อมูลผ่านอินพุตสตรีมไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [4096]; int len = 0; ไฟล์ไฟล์ = ไฟล์ใหม่ ("./" + ชื่อไฟล์); FileOutputStream FOPS = ใหม่ fileOutputStream (ไฟล์); ในขณะที่ ((len = stream.read (บัฟเฟอร์))! = -1) {fops.write (บัฟเฟอร์, 0, len); } fops.flush (); fops.close (); } catch (exception e) {e.printstacktrace (); -2. อัปโหลดไคลเอนต์ไฟล์:
แพ็คเกจ Javadownload; นำเข้า java.io.datainputstream; นำเข้า Java.io.DataOutputStream; นำเข้า Java.io.File; นำเข้า Java.io.FileInputStream; นำเข้า java.io.ioException; นำเข้า Java.io.OutputStream; นำเข้า java.net.httpurlconnection; นำเข้า java.net.url; ไฟล์สาธารณะ FilePload { / ** * ส่งคำขอ * * @param url * ที่อยู่คำขอ * @param filepath * ไฟล์ถูกบันทึกบนเซิร์ฟเวอร์ (นี่คือการเขียนเพื่อความสะดวกในการทดสอบคุณสามารถลบพารามิเตอร์นี้) * @return * @throws ioexception * if (! file.exists () ||! file.isfile ()) {return -1; } / *** ตอนที่ 1* / url urlobj = url ใหม่ (url); httpurlConnection con = (httpurlconnection) urlobj.openconnection (); / ** * ตั้งค่าคีย์ */ con.setRequestMethod ("โพสต์"); // ส่งแบบฟอร์มในโหมดโพสต์ค่าเริ่มต้น GET Method Con.setDoInput (จริง); Con.setDoOutput (จริง); Con.setUsecaches (เท็จ); // โหมดโพสต์ไม่สามารถใช้แคช // ตั้งค่าข้อมูลส่วนหัวคำขอ con.setRequestProperty ("การเชื่อมต่อ", "ปิด"); // Keep-Alive Con.setRequestProperty ("Charset", "UTF-8"); // ตั้งค่าขอบเขตขอบเขตของสตริง = "------------" + System.currentTimeMillis (); con.setRequestProperty ("เนื้อหาประเภท", "multipart/form-data; boundary =" + ขอบเขต); // ขอข้อมูลร่างกาย // ส่วนที่ 1: StringBuilder sb = new StringBuilder (); sb.append ("-"); - - - ///////////////////////////////////////////////////////////////////////////////////////////// form-data; name =/"file_name/; filename =/" " + file.getName () +"/"/"/r/n "); sb.append (" เนื้อหาประเภท: แอปพลิเคชัน/octet-stream/r/n/r/n " sb.toString (). getBytes ("UTF-8"); (bytes = in.read (bufferout))! = -1) {out.write (bufferout, 0, bytes); out.close (); สาย = null; ioException {fileupload up = new fileupload ();สรุป
ด้านบนเป็นรหัสตัวอย่างสำหรับการดาวน์โหลดไคลเอนต์ไฟล์และอัปโหลดไคลเอนต์ไฟล์ภายใต้ Java ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!