Cet article décrit comment Java implémente la lecture, l'écriture et la compression de fichiers à travers des exemples. Le code spécifique est le suivant :
package com.toone.iform.action.common ; importer java.io.BufferedReader ; importer java.io.BufferedWriter ; importer java.io.FileInputStream ; importer java.io.FileNotFoundException ; .FileOutputStream ; importer java.io.FileReader ; importer java.io.FileWriter ; java.io.IOException ; importer java.io.InputStream ; importer java.util.Enumeration ; importer java.util.zip.ZipEntry ; zip.ZipFile ; classe publique TestFileIO { static String s = File.separator ; privé static void testInput() { // Il y a un fichier Welcome.java sous le lecteur D. Maintenant, lisez-le par octets : int a = 0; // int counter=0; // Flux d'entrée try { f11 = new FileInputStream("D:" + s + "Bienvenue.java"); while ((a = f11.read()) != -1) System.out.print((char) a); La sortie ici se fait par octet. Les caractères chinois ne peuvent pas être générés normalement car un caractère chinois fait deux octets. System.out.println("/n/n--------------------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Welcome.java"); while ((a = f12.read()) != - 1) System.out.print((char) a);// Voici la sortie par caractère, les caractères chinois peuvent être affichés normalement System.out.println("/n/n------------------------------ -----------------------/n"); f11.close();// Ferme le fichier après avoir lu f12.close();// Ferme le fichier après la lecture} catch (FileNotFoundException e) { // TODO Bloc catch généré automatiquement e.printStackTrace(); } catch (IOException e) { // TODO Généré automatiquement catch block e.printStackTrace(); } } private static void testOutput() { // Il y a un fichier Welcome.java sous le lecteur D Maintenant, lisez-le par octets : int a = 0 // Flux de sortie Fichier f21 =. new File ("D:" + s + "testFile" + s + "test1.txt"); // Définissez un nouveau fichier f21, puis déterminez s'il existe dans ce répertoire. S'il n'existe pas, créez-le. if (!f21.exists()) { f21.getParentFile().mkdirs(); try { f21.createNewFile(); // Copie le contenu de "Welcome.java" dans f21 FileOutputStream fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// Lisez le fichier "Welcome.java" while ((a = fis.read()) != -1) fos.write(a);// Écrivez la mémoire de lecture sur fos, et maintenant le test1.txt est Copiez le / /classe d'écriture FileWriter de Welcome.java f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt" for (int i =); 0; i < 65535; i++) f22.write(i);//Écrire dans test2.txt. On peut également voir ici que les instructions des lignes 35 à 38 ci-dessus pour déterminer si le fichier existe peuvent être omises. // Écrit une chaîne dans le fichier FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt"); ); fis.close(); f22.close(); f23.close(); } catch (IOException e) { // TODO Bloc de capture généré automatiquement e.printStackTrace(); } } } private static void testBufferring() { // Il y a un fichier Welcome.java sous le lecteur D, lisez-le maintenant par octets : int a = 0, counter = 0; , implémentation Écriture efficace // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt")); BufferedWriter f31 ; essayer { f31 = new BufferedWriter(new FileWriter("D:" + s + "testFile" + s + "test4.txt")); for (int i = 1; i <= 100; i++) { f31 .write(String.valueOf(new Random().nextInt(100)) + " "); 10 == 0) f31.newLine(); } f31.flush();// Actualiser le tampon f31.close(); new BufferedReader(new FileReader("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("Contenu du fichier de sortie f32 :"); while ((s32 = f32.readLine()) != null) System.out.println(s32); System.out.println("/n---------------); ---------------------------------------/n"); } catch (IOException e) { // TODO Bloc catch généré automatiquement e.printStackTrace(); } } private static void testZip() { try { File f1 = new Fichier("D:/test.zip"); Fichier f2 = nouveau Fichier("D:/testFile/testzip"); ZipFile zf = new ZipFile(f1); testZipToUnzip(zf, f2); { // TODO Bloc catch généré automatiquement e.printStackTrace(); } } // Extrayez le fichier zip du package compressé dans le fichier 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());//Quels fichiers se trouvent sous le fichier zip ? Mais pourquoi la sortie n'est-elle pas dans l'ordre ? ? //Placez le fichier décompressé dans le dossier de fichiers : 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); octet[1024]; int longueur; while ((longueur = zis.read(b)) > 0) { fos.write(b, 0, longueur } fos.close(); (ZipException e1) { // TODO Bloc catch généré automatiquement e1.printStackTrace(); } catch (IOException e1) { // TODO Bloc catch généré automatiquement e1.printStackTrace(); } } } } public static void main(String[] args) throws ZipException { // TODO Stub de méthode généré automatiquement testInput(); testBufferring();