บทความนี้จะอธิบายวิธีที่ Java ใช้การอ่าน การเขียน และการบีบอัดไฟล์ผ่านตัวอย่างต่างๆ โค้ดเฉพาะมีดังนี้:
แพ็คเกจ com.toone.iform.action.common; นำเข้า java.io.BufferedReader; นำเข้า java.io.BufferedWriter; นำเข้า java.io.FileInputStream; นำเข้า java.io.FileNotFoundException; .FileOutputStream; นำเข้า java.io.FileReader; นำเข้า java.io.FileWriter; java.io.IOException; นำเข้า java.util.zip.ZipException; นำเข้า java.util.zip.ZipException; zip.ZipFile; TestFileIO คลาสสาธารณะ { สตริงคงที่ s = File.separator; testInput แบบคงที่ส่วนตัว () { // มีไฟล์ Welcome.java อยู่ใต้ไดรฟ์ D ตอนนี้อ่านเป็นไบต์: int a = 0; // int counter=0; FileInputStream f11; // สตรีมอินพุต ลอง { f11 = new FileInputStream("D:" + s + "Welcome.java"); ในขณะที่ ((a = f11.read()) != -1) System.out.print((ถ่าน) a); เอาต์พุตที่นี่เป็นไบต์ ไม่สามารถส่งออกอักขระจีนได้ตามปกติเนื่องจากอักขระจีนตัวหนึ่งมีขนาดสองไบต์ System.out.println("/n/n--------------------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Welcome.java"); while ((a = f12.read()) != - 1) System.out.print ((อักขระ) ก); // นี่คือผลลัพธ์ทีละตัวอักษร ตัวอักษรจีนสามารถส่งออกได้ตามปกติ System.out.println("/n/n -------------------------- ----------------------------------/n"); f11.close();// ปิดไฟล์หลังจากอ่าน f12.close();// ปิด ไฟล์หลังจากอ่าน} catch (FileNotFoundException e) { // TODO auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } static void testOutput() { // มีไฟล์ Welcome.java อยู่ใต้ไดรฟ์ D ตอนนี้อ่านเป็นไบต์: int a = 0; ไฟล์ใหม่ ("D:" + s + "testFile" + s + "test1.txt"); // กำหนดไฟล์ใหม่ f21 จากนั้นพิจารณาว่ามีอยู่ในไดเร็กทอรีนี้หรือไม่ ให้สร้างมันขึ้นมา if (!f21.exists()) { f21.getParentFile().mkdirs(); ลอง { f21.createNewFile(); // คัดลอกเนื้อหาของ "Welcome.java" ไปที่ f21 FileOutputStream fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// อ่านไฟล์ "Welcome.java" ในขณะที่ ((a = fis.read()) != -1) fos.write(a);// เขียนหน่วยความจำการอ่านลงใน fos และตอนนี้ test1.txt จะถูกคัดลอก / / คลาสนักเขียน FileWriter ของ Welcome.java f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt"); 0; i < 65535; i++) f22.write(i);//เขียนไปที่ test2.txt จากที่นี่จะเห็นได้ว่าคำสั่งในบรรทัดที่ 35-38 ด้านบนเพื่อพิจารณาว่ามีไฟล์อยู่สามารถละเว้นได้หรือไม่ // เขียนสตริงลงในไฟล์ FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt"); fos.close ( fis.close(); f22.close(); f23.close(); } catch (IOException e) { // TODO สร้างบล็อกอัตโนมัติ e.printStackTrace(); } } } private static void testBufferring() { // มีไฟล์ Welcome.java อยู่ใต้ไดรฟ์ D ตอนนี้อ่านเป็นไบต์: int a = 0, counter = 0; // อักขระบัฟเฟอร์ , การใช้งาน การเขียนอย่างมีประสิทธิภาพ // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt")); BufferedWriter f31; ลอง { f31 = new BufferedWriter("D:" + s + "testFile" + s + "test4.txt")); สำหรับ (int i = 1; i <= 100; i++) { f31 .write(String.valueOf(new Random().nextInt(100)) + " "); 10 == 0) f31.newLine(); } f31.flush();// รีเฟรชบัฟเฟอร์ f31.close(); BufferedReader f32 = new BufferedReader(new FileReader("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("เนื้อหาของไฟล์เอาต์พุต f32:"); ในขณะที่ ((s32 = f32.readLine()) != null) System.out.println(s32); f32.close(); System.out.println("/n---------- --------------------------------------/n"); } catch (IOException e) { // TODO catch block ที่สร้างขึ้นอัตโนมัติ e.printStackTrace(); } } static void testZip() { try { File f1 = new ไฟล์ ("D:/test.zip"); ไฟล์ f2 = ไฟล์ใหม่ ("D:/testFile/testzip"); ZipFile zf = new ZipFile(f1); testZipToUnzip(zf, f2); { // TODO catch block ที่สร้างขึ้นอัตโนมัติ e.printStackTrace(); } } // แตกไฟล์ zipfile แพ็คเกจที่บีบอัดลงในไฟล์ public static void testZipToUnzip (ZipFile zipfile, ไฟล์ไฟล์) { ZipEntry zentry = null; File zipout; InputStream zis = null; FileOutputStream fos = null; Enumeration e = zipfile.entries();// ไดเร็กทอรีของ zipfile ในขณะที่ (e.hasMoreElements() ) { zentry = (ZipEntry) e.nextElement(); System.out.println(zentry.getName());//ไฟล์ใดบ้างที่อยู่ภายใต้ zipfile? แต่ทำไมมันถึงไม่เรียงตามลำดับล่ะ? - //ใส่ไฟล์ที่คลายการบีบอัดลงในโฟลเดอร์ไฟล์: zipout = new File(file + s + zentry.getName()); if (!zentry.isDirectory()) { try { zis = zipfile.getInputStream(zentry) ; !zipout.exists()) zipout.getParentFile().mkdirs(); fos = new FileOutputStream(zipout); ไบต์[] b = ใหม่ ไบต์ [1024]; int length; while ((length = zis.read(b)) > 0) { fos.write(b, 0, length); } fos.close(); (ZipException e1) { // TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ e1.printStackTrace(); } catch (IOException e1) { // TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ e1.printStackTrace(); } } } สาธารณะคงเป็นโมฆะ main(String[] args) พ่น ZipException { // TODO วิธีสร้างอัตโนมัติ stub testInput(); testBufferring();