この記事では、Java がファイルの読み取り、書き込み、圧縮を実装する方法を例を通して説明します。具体的なコードは次のとおりです。
パッケージ com.toone.iform.action.common; インポート java.io.BufferedWriter; インポート java.io.FileInputStream; .FileOutputStream; インポート java.io.FileWriter; java.io.IOException; インポート java.util.Enumeration; インポート java.util.zip.ZipException; zip.ZipFile; public class TestFileIO { static String s = File.separator { // D ドライブの下に Welcome.java ファイルがあります。 int a = 0; // int counter=0; // 入力ストリーム try { f11 = new FileInputStream("D:" +) s + "Welcome.java"); while ((a = f11.read()) != -1) System.out.print((char) a);ここでの出力はバイト単位です。漢字は 1 文字が 2 バイトであるため、通常は出力できません。 System.out.println("/n/n----------------------------------------------------- -----------/n"); FileReader f12 = new FileReader("D:" + s + "Welcome.java"); while ((a = f12.read()) != - 1) System.out.print((char) a);//こちらは文字単位での出力です。漢字は正常に出力できます。 System.out.println("/n/n-------------------------- -----------------------/n"); f11.close();// 読み込み後にファイルを閉じる f12.close();// 閉じる読み取り後のファイル} catch (FileNotFoundException e) { // TODO 自動生成された catch ブロック e.printStackTrace() } catch (IOException e) { // TODO 自動生成されたcatch block e.printStackTrace(); } } private static void testOutput() { // D ドライブに Welcome.java ファイルがあります。これをバイト単位で読み込みます。 int a = 0; // 出力ストリーム File f21 = new File ("D:" + s + "testFile" + s + "test1.txt"); // 新しいファイル f21 を定義し、このディレクトリに存在するかどうかを確認します。存在しない場合は作成します。 if (!f21.exists()) { f21.getParentFile().mkdirs(); try { f21.createNewFile(); // 「Welcome.java」の内容を f21 FileOutputStream にコピーします fos = new FileOutputStream(f21); FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// ((a = fis.read()) != -1) fos.write(a);// 読み取ったメモリを fos に書き込み、test1.txt をコピーします。 / Welcome.java のライター クラス FileWriter 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"); f23.write("Hello, world!"); ); fis.close(); f23.close(); } catch (IOException e) { // 自動生成された catch ブロックe.printStackTrace(); } } } private static void testBufferring() { // D ドライブに Welcome.java ファイルがあり、バイト単位で読み込みます: int a = 0, counter = 0; // , 実装 効率的な書き込み // 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++) .write(String.valueOf(new Random().nextInt(100)) + " "); 10 == 0) f31.newLine(); } f31.flush();// バッファを更新 f31.close(); BufferedReader(new FileReader("D:" + s + "testFile" + s + "test4.txt")); String s32; System.out.println("出力ファイル f32 の内容:"); while ((s32 = f32.readLine()) != null) System.out.println(s32); System.out.println("/n---------- --------------------------------------/n"); } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace() } } private static void testZip() { try { File f1 = new File("D:/test.zip"); ファイル f2 = new File("D:/testFile/testzip"); { // TODO 自動生成された catch ブロック e.printStackTrace() } } // 圧縮されたパッケージ zip ファイルをファイルに抽出します public static void testZipToUnzip(ZipFile zipfile, File file) { ZipEntry zentry = null; FileOutputStream fos = null; // zipfile のディレクトリ while (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 = 新しい FileOutputStream(zipout); b = 新しいbyte[1024]; int 長さ; ((length = zis.read(b)) > 0) { fos.write(b, 0, length) } zis.close(); (ZipException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace() } catch (IOException e1) { // TODO 自動生成された catch ブロックe1.printStackTrace(); } } } public static void main(String[] args) throws ZipException { // 自動生成されたメソッド testInput(); }}