Artikel ini menjelaskan bagaimana Java mengimplementasikan pembacaan, penulisan, dan kompresi file melalui contoh.
paket com.toone.iform.action.common;impor java.io.BufferedReader; impor java.io.FileNotFoundException; .FileOutputStream; impor java.io.FileReader; impor java.io.FileWriter; java.io.IOException; impor java.io.InputStream; impor java.util.ZipException; zip.ZipFile; kelas publik TestFileIO { static String s = File.separator; private static void testInput() {// Ada file Welcome.java di bawah drive D. Sekarang baca dalam byte: int a = 0; // int counter=0; FileInputStream f11; s + "Selamat datang.java"); while ((a = f11.read()) != -1) System.out.print((char) a); Output di sini adalah per byte. Karakter Cina tidak dapat ditampilkan secara normal karena satu karakter Cina sama dengan dua byte. Sistem.keluar.println("/n/n--------------------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Selamat datang.java"); while ((a = f12.read()) != - 1) Sistem.keluar.cetak((karakter) a);// Berikut adalah keluaran berdasarkan karakter, karakter Cina dapat dikeluarkan secara normal System.out.println("/n/n-------------------------- -----------------------/n"); f11.close();// Tutup file setelah membaca f12.close();// Tutup file setelah membaca} catch (FileNotFoundException e) { // TODO Blok tangkapan yang dibuat secara otomatis e.printStackTrace() } catch (IOException e) { // TODO Dibuat secara otomatis catch block e.printStackTrace(); } } private static void testOutput() {// Ada file Welcome.java di bawah drive D. Sekarang baca dalam byte: int a = 0; File baru ("D:" + s + "testFile" + s + "test1.txt"); // Tentukan file baru f21, lalu tentukan apakah file tersebut ada di direktori ini. if (!f21.exists()) { f21.getParentFile().mkdirs(); coba { f21.createNewFile(); // Salin konten "Welcome.java" ke f21 FileOutputStream fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Selamat datang.java");// Baca file "Welcome.java" saat ((a = fis.read()) != -1) fos.write(a);// Tulis memori baca ke fos, dan sekarang test1.txt adalah Salin / / kelas penulis FileWriter dari Welcome.java f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt" untuk (int i = 0; saya <65535; i++) f22.write(i);//Tulis ke test2.txt. Dari sini juga terlihat bahwa pernyataan pada baris 35-38 di atas untuk menentukan apakah file tersebut ada dapat dihilangkan. // Tulis string ke file FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt"); ); fis.close(); f22.close(); f23.close(); } catch (IOException e) { // TODO Blok tangkapan yang dibuat secara otomatis e.printStackTrace(); } } } private static void testBufferring() { // Ada file Welcome.java di bawah drive D, sekarang baca dalam byte: int a = 0, counter = 0; , implementasi Penulisan yang efisien // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt")); BufferedWriter f31; coba { f31 = new BufferedWriter(fileWriter baru("D:" + s + "testFile" + s + "test4.txt") untuk (int i = 1; i <= 100; i++) { f31 .write(String.valueOf(random baru().nextInt(100)) + " "); 10 == 0) f31.newLine(); } f31.flush();// Segarkan buffer f31.close(); BufferedReader f32 = BufferedReader baru(FileReader baru("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("Isi berkas keluaran f32:"); while ((s32 = f32.readLine()) != null) System.out.println(s32); f32.close(); System.out.println("/n----------- ---------------------------------------/n"); } catch (IOException e) { // TODO Blok tangkapan yang dibuat secara otomatis e.printStackTrace(); } private static void testZip() { coba { File f1 = baru File("D:/test.zip"); File f2 = File baru("D:/testFile/testzip"); ZipFile zf = ZipFile baru(f1); testZipToUnzip(zf } catch (IOException e) { // TODO Blok tangkapan yang dibuat secara otomatis e.printStackTrace() } } // Ekstrak file zip paket terkompresi ke dalam file public static void testZipToUnzip(ZipFile zipfile, File file) { ZipEntry zentry = null; File zipout; InputStream zis = null; FileOutputStream fos = null; ) { zentry = (ZipEntry) e.nextElement(); System.out.println(zentry.getName());//File apa yang ada di bawah zipfile? Tapi kenapa outputnya tidak berurutan? ? //Masukkan file yang telah didekompresi ke dalam folder file: zipout = new File(file + s + zentry.getName()); !zipout.exists()) zipout.getParentFile().mkdirs(); fos = new FileOutputStream(zipout byte[] b = baru byte[1024]; int panjang; while ((panjang = zis.read(b)) > 0) { fos.write(b, 0, panjang); } fos.close(); (ZipException e1) { // TODO Blok tangkapan yang dibuat secara otomatis e1.printStackTrace(); } catch (IOException e1) { // TODO Blok tangkapan yang dibuat secara otomatis e1.printStackTrace(); } } } } public static void main(String[] args) melempar ZipException { // TODO stub metode yang dihasilkan secara otomatis testInput(); testBufferring();