0Pricing
Java Academy · レッスン

バッファ付きストリーム

バッファ付きストリームを学びます。効率的なバイトI/OのためのBufferedInputStreamとBufferedOutputStreamを扱います。

「バッファ付きストリーム」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。

導入

バッファ付きストリームはファイルI/Oを高速化します。小さな読み書きをまとめて、大きな単位の操作として処理します。

BufferedInputStreamの概念

BufferedInputStreamはInputStreamをラップし、バイトのまとまりをメモリに読み込みます。小さな読み込みを何度も行う場合に、処理が高速になります。

コード: BufferedInputStream

このコードはバッファリングを使ってファイルからバイトを読み込みます。出力には、スペースで区切られたバイト値が表示されます。

public class Main {
  public static void main(String[] args) {
    java.nio.file.Path p = java.nio.file.Paths.get("data.bin");
    try (java.io.BufferedInputStream bis = new java.io.BufferedInputStream(java.nio.file.Files.newInputStream(p))) {
      int b;
      while ((b = bis.read()) != -1) {
        System.out.print(b + " ");
      }
    } catch (java.io.IOException e) {
      System.out.println("Error: " + e.getMessage());
    }
  }
}

BufferedOutputStreamの概念

BufferedOutputStreamは、書き込む前にバイトをメモリに蓄積します。これにより、ディスクへの書き込み回数を減らせます。

コード: BufferedOutputStream

このコードはout.binに5バイトを書き込みます。BufferedOutputStreamは効率化のため、まとまりごとにフラッシュします。

public class Main {
  public static void main(String[] args) {
    java.nio.file.Path p = java.nio.file.Paths.get("out.bin");
    try (java.io.BufferedOutputStream bos = new java.io.BufferedOutputStream(java.nio.file.Files.newOutputStream(p))) {
      for (int i = 0; i < 5; i++) {
        bos.write(i); // write 5 bytes
      }
    } catch (java.io.IOException e) {
      System.out.println("Error: " + e.getMessage());
    }
  }
}

コード: バッファ付きストリームによるコピー

バッファ付きストリームを使うと、ファイルを簡単かつ効率的にコピーできます。バイトバッファを使ってファイルを読み書きします。

public class Main {
  public static void main(String[] args) {
    java.nio.file.Path in = java.nio.file.Paths.get("data.bin");
    java.nio.file.Path out = java.nio.file.Paths.get("copy.bin");
    try (java.io.BufferedInputStream bis = new java.io.BufferedInputStream(java.nio.file.Files.newInputStream(in));
         java.io.BufferedOutputStream bos = new java.io.BufferedOutputStream(java.nio.file.Files.newOutputStream(out))) {
      int b;
      while ((b = bis.read()) != -1) {
        bos.write(b);
      }
    } catch (java.io.IOException e) {
      System.out.println("Error: " + e.getMessage());
    }
  }
}

バッファ付きストリームの確認

クイックチェック:BufferedInputStreamまたはBufferedOutputStreamを使うのはなぜですか。

まとめ

まとめ:バッファ付きストリームは、小さな読み書きを大きな単位の操作にまとめることで、パフォーマンスを向上させます。

よくある質問

「バッファ付きストリーム」レッスンは無料ですか?

はい。「バッファ付きストリーム」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。

「バッファ付きストリーム」で何を学びますか?

バッファ付きストリームを学びます。効率的なバイトI/OのためのBufferedInputStreamとBufferedOutputStreamを扱います。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。

「バッファ付きストリーム」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. java.nio.fileのPathとFiles
  2. テキストファイルの読み書き
  3. バッファ付きストリーム
← Java Academyに戻る