バッファ付きストリーム
バッファ付きストリームを学びます。効率的なバイト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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- java.nio.fileのPathとFiles
- テキストファイルの読み書き
- バッファ付きストリーム