ホームページ  >  記事  >  Java  >  Java で実装されたファイルの読み取りおよび書き込み技術とアプリケーション

Java で実装されたファイルの読み取りおよび書き込み技術とアプリケーション

王林
王林オリジナル
2023-06-18 08:34:371695ブラウズ

Java は、非常に強力なファイルの読み取りおよび書き込み機能を備えた高水準プログラミング言語です。この記事では、Javaファイルの読み書きのテクニックと応用方法を紹介します。

1. Java ファイルの読み取りと書き込みの基本

1.1 ファイルの読み取り

Java でファイルを読み取る最も一般的に使用される方法は、BufferedReader クラスを使用することです。以下は簡単な例です:

try{
    BufferedReader br = new BufferedReader(new FileReader("input.txt"));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず BufferedReader オブジェクトを作成します。このオブジェクトは、FileReader クラスを使用して input.txt ファイルを読み取ります。次に、ファイル内の各行を読み取り、コンソールに出力します。

1.2 ファイルの書き込み

Java でファイルを書き込む最も一般的に使用される方法は、PrintWriter クラスを使用することです。以下に簡単な例を示します。

try{
    PrintWriter pw = new PrintWriter("output.txt");
    pw.println("Hello, world!");
    pw.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず PrintWriter オブジェクトを作成します。これにより、出力が output.txt ファイルに書き込まれます。次に、「Hello, world!」という文字列をファイルに 1 行書き込み、最後に PrintWriter オブジェクトを閉じます。

1.3 バイナリ ファイルの読み取りと書き込み

Java はテキスト ファイルに加えて、バイナリ ファイルの読み取りと書き込みもできます。以下に簡単な例を示します。

try{
    FileInputStream fis = new FileInputStream("input.bin");
    int data = fis.read();
    while (data != -1) {
        System.out.println(data);
        data = fis.read();
    }
    fis.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず FileInputStream オブジェクトを作成し、input.bin ファイルをバイナリ モードで開きます。次に、ファイルからデータをバイトごとに読み取り、コンソールに出力します。最後に、FileInputStream オブジェクトを閉じます。

2. Java ファイルの読み書きスキル

2.1 ファイルの文字エンコーディング

Java でテキスト ファイルを処理する場合は、ファイルの文字エンコーディングに特別な注意を払う必要があります。 。ファイルのエンコードが Java のデフォルトの UTF-8 エンコードではない場合、ファイルの読み取りまたは書き込みには適切なエンコーダを使用する必要があります。以下は、UTF-16 エンコードされたファイルを読み取る例です。

try{
    BufferedReader br = new BufferedReader(new InputStreamReader(
            new FileInputStream("input.txt"), "UTF-16"));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、FileInputStream オブジェクトを InputStreamReader オブジェクトに変換し、UTF-16 エンコーダーを指定することによって、input.txt ファイルを読み取ります。不適切なエンコーダを使用してテキスト ファイルを読み取ると、奇妙な文字が生成されたり、エンコード エラーが発生したりする可能性があるため、ファイルのエンコードに必ず注意してください。

2.2 大きなファイルの読み取りと書き込み

大きなファイルを処理するときは、メモリの使用量に特別な注意を払う必要があります。ファイル全体を一度にメモリに読み込むと、メモリ リークやプログラムのクラッシュが発生する可能性があります。したがって、Java NIO (新しい I/O) を使用して、大きなファイルを 1 行ずつ読み取ることができます。以下は、大きなファイルを読み取る例です。

try{
    RandomAccessFile raf = new RandomAccessFile("input.txt", "r");
    FileChannel fc = raf.getChannel();
    ByteBuffer buf = ByteBuffer.allocate(1024);
    while (fc.read(buf) != -1) {
        buf.flip();
        byte[] bytes = new byte[buf.limit()];
        buf.get(bytes);
        System.out.print(new String(bytes, Charset.forName("UTF-8")));
        buf.clear();
    }
    fc.close();
    raf.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず RandomAccessFile オブジェクトを作成し、その RandomAccessFile オブジェクトを使用して FileChannel オブジェクトを作成します。次に、サイズ 1024 バイトの ByteBuffer オブジェクトを作成します。次に、FileChannel オブジェクトを使用してデータを ByteBuffer オブジェクトに読み取り、ByteBuffer オブジェクトを使用してデータをバイト配列に変換し、UTF-8 エンコーダーを使用してバイト配列を文字列に変換します。最後に、次回データを読み取れるように ByteBuffer オブジェクトをクリアします。

2.3 大きなファイルの書き込み

大きなファイルを扱うときは、ファイルを適切なサイズに分割し、1 行ずつ書き込むことにも特別な注意を払う必要があります。以下は、大きなファイルを書き込む例です。

try{
    PrintWriter pw = new PrintWriter(new File("output.txt"));
    for (int i = 0; i < 1000000; i++) {
        pw.println("Line #" + i);
        if (i % 10000 == 0) {
            pw.flush();
        }
    }
    pw.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず PrintWriter オブジェクトを作成します。このオブジェクトは、出力をoutput.txt ファイルに書き込みます。次に、ループで 1,000,000 行のデータを書き込み、10,000 行ごとにバッファをフラッシュしてデータをディスクに書き込みます。最後に、PrintWriter オブジェクトを閉じます。

3. Java ファイルの読み取りおよび書き込みアプリケーション

3.1 ファイルのコピー

Java ファイルの読み取りおよび書き込み機能の最も一般的に使用されるアプリケーションの 1 つは、ファイルのコピーです。以下は、単純なファイル コピーの例です。

try{
    FileInputStream fis = new FileInputStream("input.txt");
    FileOutputStream fos = new FileOutputStream("output.txt");
    byte[] buffer = new byte[1024];
    int count;
    while ((count = fis.read(buffer)) != -1) {
        fos.write(buffer, 0, count);
    }
    fis.close();
    fos.close();
} catch(IOException e){
    e.printStackTrace();
}

このコードでは、まず、input.txt ファイルを読み取るための FileInputStream オブジェクトを作成します。次に、output.txt ファイルにデータを書き込むための FileOutputStream オブジェクトを作成しました。次に、ファイルをブロックごとにコピーするためのバイト配列バッファを作成します。最後に、ファイル内の各データをループして出力ファイルに書き込みます。

3.2 ファイルのハッシュ値の計算

Java ファイルの読み取りおよび書き込み関数を使用して、ファイルのハッシュ値 (Hash) を計算することもできます。ファイルのハッシュ値を計算する例を次に示します。

try{
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    FileInputStream fis = new FileInputStream("input.txt");
    byte[] buffer = new byte[1024];
    int count;
    while ((count = fis.read(buffer)) != -1) {
        md.update(buffer, 0, count);
    }
    fis.close();
    byte[] digest = md.digest();
    System.out.println(DatatypeConverter.printHexBinary(digest));
} catch(IOException | NoSuchAlgorithmException e){
    e.printStackTrace();
}

このコードでは、まず MessageDigest オブジェクトを作成し、SHA-256 暗号化アルゴリズムを使用します。次に、input.txt ファイルを読み取るための FileInputStream オブジェクトを作成しました。次に、バイト配列バッファを作成し、ファイル内の各データをループして MessageDigest オブジェクトに更新します。最後に、FileInputStream オブジェクトを閉じ、MessageDigest オブジェクトを使用してファイルのハッシュ値を計算し、計算結果を 16 進文字列の形式でコンソールに出力します。

結論

Java ファイルの読み取りおよび書き込み機能は非常に強力であり、開発者はさまざまなテクニックを柔軟に使用して、ファイルのエンコード処理、大きなファイルの読み取りおよび書き込み、ファイルの読み取りおよび書き込みなど、さまざまな読み取りおよび書き込みのニーズに対応できます。コピーやハッシュ値計算などしたがって、Java ファイルの読み書きスキルとアプリケーションを習得すると、開発効率とコード品質の向上に役立ちます。

以上がJava で実装されたファイルの読み取りおよび書き込み技術とアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。