ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
OutputStream とは
OutputStream は ストリームAPI におけるバイト出力ストリームの抽象基底クラスです。InputStream の対になるクラスで、ファイル / ネットワーク / メモリ など、どこに書くかに関わらず「バイトの並びを書き込む」インターフェースを共通化します。
抽象クラスなので直接インスタンス化はできず、用途に応じた具象クラス(FileOutputStream / ByteArrayOutputStream / BufferedOutputStream / PrintStream など)を使います。
主な具象クラス
| クラス | 用途 |
|---|---|
FileOutputStream | ファイルにバイトを書き込む |
BufferedOutputStream | 内部バッファでまとめ書き → 性能改善 |
ByteArrayOutputStream | メモリ上の byte[] に書き込む(テスト・一時バッファ) |
DataOutputStream | プリミティブ型(int, double, UTF 文字列)をバイナリで書く |
ObjectOutputStream | オブジェクトをシリアライズして書く |
PrintStream | System.out でおなじみ。print/println で書く |
FilterOutputStream | 他の OutputStream をラップするデコレータ基底 |
主なメソッド
| メソッド | 説明 |
|---|---|
write(int b) | 1 バイト書き込む(下位 8 ビットだけ使用) |
write(byte[] b) | 配列全体を書き込む |
write(byte[] b, int off, int len) | 配列の指定範囲を書き込む |
flush() | バッファに残ったデータを実際に書き出す |
close() | ストリームを閉じる(自動で flush) |
使用例 1: ファイルに書き込む
import java.io.FileOutputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) {
// try-with-resources で自動 close
try (FileOutputStream fos = new FileOutputStream("out.txt")) {
String text = "Hello, OutputStream!\n";
fos.write(text.getBytes("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用例 2: BufferedOutputStream でラップ
1 バイトずつ write(int) を呼ぶと毎回ディスク I/O が発生して遅くなります。BufferedOutputStream で囲むと内部バッファ(既定 8192 バイト)に溜め、満杯になったタイミングでまとめて書き出されるため、桁違いに速くなります。
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedSample {
public static void main(String[] args) {
try (BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream("big.bin"))) {
for (int i = 0; i < 1_000_000; i++) {
bos.write(i & 0xFF);
}
// close() 時に自動 flush されるが、明示的に呼びたい場合は:
// bos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用例 3: 追記モード
FileOutputStream の 2 番目の引数 append を true にすると、既存ファイルの末尾に追記されます(既定は false = 上書き)。
try (FileOutputStream fos = new FileOutputStream("log.txt", true)) {
fos.write("追記行\n".getBytes("UTF-8"));
}
使用例 4: OutputStreamWriter でテキスト書き込み
OutputStream は本来バイト用ですが、OutputStreamWriter を被せると String をエンコーディング指定で書けます。さらに BufferedWriter で囲むのが定番です。
import java.io.*;
import java.nio.charset.StandardCharsets;
try (BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("memo.txt"),
StandardCharsets.UTF_8))) {
bw.write("こんにちは");
bw.newLine();
bw.write("OutputStream の世界");
}
InputStream / Writer 系との関係
| 方向 / 単位 | バイト系 | 文字系 |
|---|---|---|
| 入力 | InputStream 系 | Reader 系 |
| 出力 | OutputStream 系 | Writer 系 |
画像・音声・ZIP などのバイナリは OutputStream、ログ・JSON・CSV などのテキストは Writer 系を選ぶのが基本方針です。
flush() と close() の使い分け
| メソッド | 役割 |
|---|---|
flush() | バッファに溜まったデータを実体に押し出す。ストリームは開いたまま |
close() | flush してからストリームを閉じる。OS リソース(ファイルディスクリプタ)を解放 |
長時間動くサーバが「途中まで書いたログがファイルに見えない」場合、たいてい flush 忘れです。try-with-resources を使えば close 時に自動 flush されるので、原則それで足ります。
よくあるエラーと対処
| 症状 | 原因 / 対処 |
|---|---|
FileNotFoundException: ... (アクセスが拒否されました) | 書き込み権限なし / 同名ファイルが他プロセスで開かれている |
| 文字化け | getBytes() の引数 / OutputStreamWriter の文字コード未指定。StandardCharsets.UTF_8 を明示 |
| 書き込み内容が途中までしか出ない | flush / close 忘れ。try-with-resources を使う |
| 巨大ファイルで OOM | byte[] = readAllBytes() 等で全量メモリに載せている。チャンク単位で write(buf, 0, n) ループに置き換える |
関連
- ストリームAPI — 親カテゴリ
- InputStream — 入力側の対概念
- ファイル入出力 — ファイル操作の文脈
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- InputStream
- OutputStream
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?