In diesem Artikel wird anhand von Beispielen beschrieben, wie Java das Lesen, Schreiben und Komprimieren von Dateien implementiert.
package com.toone.iform.action.common;import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; .FileOutputStream; import java.io.FileReader; import java.io.FileWriter; java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip. zip.ZipFile; public class TestFileIO { static String s = File.separator; Es gibt eine Welcome.java-Datei unter dem Laufwerk D. Lesen Sie sie jetzt byteweise ein: int a = 0; // int counter=0; // Input stream try { f11 = new FileInputStream("D:" + s + "Welcome.java"); while ((a = f11.read()) != -1) System.out.print((char) a); Die Ausgabe erfolgt hier byteweise. Chinesische Zeichen können nicht normal ausgegeben werden, da ein chinesisches Zeichen zwei Bytes umfasst. System.out.println("/n/n--------------------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Welcome.java"); while ((a = f12.read()) != - 1) System.out.print((char) a);// Hier ist die Ausgabe nach Zeichen. Chinesische Zeichen können normal ausgegeben werden System.out.println("/n/n------------ -----------------------/n"); f11.close();// Schließen Sie die Datei nach dem Lesen von f12.close();// Schließen die Datei nach dem Lesen} Catch (FileNotFoundException e) { // TODO Automatisch generierter Catch-Block e.printStackTrace(); } Catch (IOException e) { // TODO Automatisch generiert Catch Block e.printStackTrace(); } } private static void testOutput() { // Es gibt eine Welcome.java-Datei unter dem Laufwerk D. Lesen Sie sie jetzt byteweise ein: int a = 0; // Ausgabestream-Datei f21 = new File ("D:" + s + "testFile" + s + "test1.txt"); // Definieren Sie eine neue Datei f21 und ermitteln Sie dann, ob sie in diesem Verzeichnis vorhanden ist. if (!f21.exists()) { f21.getParentFile().mkdirs(); try { f21.createNewFile(); // Kopiere den Inhalt von „Welcome.java“ nach f21 FileOutputStream fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// Lesen Sie die Datei „Welcome.java“, während ((a = fis.read()) != -1) fos.write(a);// Schreiben Sie den Lesespeicher in fos, und jetzt wird test1.txt kopiert / /Writer-Klasse FileWriter von Welcome.java f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt"); for (int i = 0; i < 65535; i++) f22.write(i);//In test2.txt schreiben. Daraus ist auch ersichtlich, dass die Anweisungen in den Zeilen 35-38 oben zur Feststellung, ob die Datei vorhanden ist, weggelassen werden können. // Schreibe einen String in die Datei FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt"); ); fis.close(); f23.close(); } Catch (IOException e) { // TODO Automatisch generierter Catch-Block e.printStackTrace(); } } } private static void testBufferring() { // Es gibt eine Welcome.java-Datei unter dem Laufwerk D, jetzt in Bytes einlesen: int a = 0, counter = 0; , Implementierung Effizientes Schreiben // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt")); BufferedWriter f31; try { f31 = new BufferedWriter("D:" + s + "testFile" + s + "test4.txt")); for (int i = 1; i <= 100; i++) { f31 .write(String.valueOf(new Random().nextInt(100)) + " "); if (i % 10 == 0) f31.newLine(); } f31.flush();// Puffer aktualisieren f31.close(); f32 = new BufferedReader(new FileReader("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("Inhalt der Ausgabedatei f32:"); while ((s32 = f32.readLine()) != null) System.out.println(s32); f32.close("/n----------- ---------------------------------------/n"); } Catch (IOException e) { // TODO Automatisch generierter Catch-Block e.printStackTrace(); } } private static void testZip() { try { File f1 = new File("D:/test.zip"); File f2 = new File("D:/testFile/testzip"); { // TODO Automatisch generierter Catch-Block e.printStackTrace(); } } // Extrahiere die komprimierte Paket-ZIP-Datei in die Datei public static void testZipToUnzip(ZipFile zipfile, File file) { ZipEntry zentry = null; InputStream zis = null;// Das Verzeichnis der zipfile while (e.hasMoreElements() ) { zentry = (ZipEntry) e.nextElement(); System.out.println(zentry.getName());//Welche Dateien befinden sich unter zipfile? Aber warum wird es nicht in der richtigen Reihenfolge ausgegeben? ? //Legen Sie die dekomprimierte Datei in den Dateiordner: 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 = new byte[1024]; int length; while ((length = zis.read(b)) > 0) { fos.write(b, 0, length); (ZipException e1) { // TODO Automatisch generierter Catch-Block e1.printStackTrace(); } Catch (IOException e1) { // TODO Automatisch generierter Catch-Block e1.printStackTrace(); } } } public static void main(String[] args) throws ZipException { // TODO Automatisch generierter Methoden-Stub testInput();