Java : PrintStream - API使用例

PrintStream (Java SE 16 & JDK 16)の使用例まとめです。
だいたいのメソッドを網羅済みです。
公式API仕様のおともにどうぞ。


概要

クラス構成

PrintStreamクラスは

  • boolean, int, floatといった基本データ型
  • 文字列
  • オブジェクト

を便利に書き出すメソッドを持ちます。

システム標準出力である System.out は PrintStreamオブジェクトです。
使ったことのあるかたも多いのではないでしょうか。

final PrintStream ps = System.out;

ps.print(1234); // "1234"
ps.print("abc"); // "abc"
ps.printf("num = %d", 1234); // "num = 1234"
final PrintStream ps = System.out;

// ~ln メソッドは改行込みで出力します。
ps.println(1234);
ps.println("abc");
ps.println(123.45678f);

// 結果 ↓
//1234
//abc
//123.45678

また、PrintStreamクラスは、一部のコンストラクタを除き、IOExceptionを発生させることはありません。
代わりにcheckErrorメソッドでエラーを確認します。

補足

コンストラクタ

PrintStream (File file)

行の自動フラッシュは行わずに、指定のファイルで新しい出力ストリームを作成します。

final var file = Path.of("R:", "java-work", "sample.txt");

try (final var ps = new PrintStream(file.toFile())) {

    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file));

PrintStream (File file, String csn)

行の自動フラッシュは行わずに、指定のファイルと文字セットで新しい出力ストリームを作成します。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var file = Path.of("R:", "java-work", "sample.txt");
final var csn = "Shift_JIS";

try (final var ps = new PrintStream(file.toFile(), csn)) {

    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file, Charset.forName(csn)));

PrintStream (File file, Charset charset)

行の自動フラッシュは行わずに、指定のファイルと文字セットで新しい出力ストリームを作成します。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var file = Path.of("R:", "java-work", "sample.txt");
final var charset = Charset.forName("Shift_JIS");

try (final var ps = new PrintStream(file.toFile(), charset)) {

    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file, charset));

PrintStream (OutputStream out)

指定されたOutputStreamで新規の印刷ストリームが自動行フラッシュなしで作成されます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(out);

PrintStream (OutputStream out, boolean autoFlush)

指定されたOutputStreamおよび行フラッシュを使用して、新規の印刷ストリームを作成します。

// autoFlush = false ではバッファがフラッシュされません。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(new BufferedOutputStream(out), false)) {

    ps.print("abc");
    System.out.println(out); // ""

    ps.println("def");
    System.out.println(out); // ""

    ps.printf("num = %d", 1234);
    System.out.println(out); // ""
}

//abcdef
//num = 1234
System.out.println(out);
// autoFlush = true では適時バッファがフラッシュされます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(new BufferedOutputStream(out), true)) {
    ps.print("abc");
    System.out.println(out); // "abc"

    ps.println("def");
    System.out.println(out); // "abcdef"

    ps.printf("num = %d", 1234);

    //abcdef
    //num = 1234
    System.out.println(out);
}

//abcdef
//num = 1234
System.out.println(out);

PrintStream (OutputStream out, boolean autoFlush, String encoding)

指定されたOutputStream、行フラッシュおよび文字エンコーディングを使用して、新規の出力ストリームを作成します。

autoFlushについては、PrintStream (OutputStream out, boolean autoFlush)の使用例に記載しました。そちらもご参照ください。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var out = new ByteArrayOutputStream();
final var encoding = "Shift_JIS";

try (final var ps = new PrintStream(out, true, encoding)) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(out.toString(encoding));

PrintStream (OutputStream out, boolean autoFlush, Charset charset)

指定されたOutputStream、行フラッシュおよび文字セットを含む新しい出力ストリームを作成します。

autoFlushについては、PrintStream (OutputStream out, boolean autoFlush)の使用例に記載しました。そちらもご参照ください。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var out = new ByteArrayOutputStream();
final var charset = Charset.forName("Shift_JIS");

try (final var ps = new PrintStream(out, true, charset)) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(out.toString(charset));

PrintStream (String fileName)

行の自動フラッシュは行わずに、指定の名前で新しい出力ストリームを作成します。

final var file = Path.of("R:", "java-work", "sample.txt");
final var fileName = file.toString();
System.out.println(fileName); // "R:\java-work\sample.txt"

try (final var ps = new PrintStream(fileName)) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file));

PrintStream (String fileName, String csn)

行の自動フラッシュは行わずに、指定の名前と文字セットで新しい出力ストリームを作成します。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var file = Path.of("R:", "java-work", "sample.txt");
final var fileName = file.toString();
System.out.println(fileName); // "R:\java-work\sample.txt"

final var csn = "Shift_JIS";

try (final var ps = new PrintStream(fileName, csn)) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file, Charset.forName(csn)));

PrintStream (String fileName, Charset charset)

行の自動フラッシュは行わずに、指定の名前と文字セットで新しい出力ストリームを作成します。

System.out.println(Charset.defaultCharset()); // "UTF-8"

final var file = Path.of("R:", "java-work", "sample.txt");
final var fileName = file.toString();
System.out.println(fileName); // "R:\java-work\sample.txt"

final var charset = Charset.forName("Shift_JIS");

try (final var ps = new PrintStream(fileName, charset)) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

//abc
//1234
//あいうえお
System.out.println(Files.readString(file, charset));

メソッド

PrintStream append (char c)

この出力ストリームに指定された文字を追加します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.append('a').append('b').append('c');
}

System.out.println(out); // "abc"

PrintStream append (CharSequence csq)

この出力ストリームに指定された文字シーケンスを追加します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.append("abc").append("-").append("xyz");
}

System.out.println(out); // "abc-xyz"

PrintStream append (CharSequence csq, int start, int end)

指定された文字シーケンスのサブシーケンスをこの出力ストリームに追加します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {
    final var csq = "abcd";

    ps.append(csq, 0, 1).println();
    ps.append(csq, 0, 2).println();
    ps.append(csq, 0, 3).println();
    ps.append(csq, 0, 4).println();
}

//a
//ab
//abc
//abcd
System.out.println(out);
final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {
    final var csq = "abcd";

    ps.append(csq, 0, 4).println();
    ps.append(csq, 1, 4).println();
    ps.append(csq, 2, 4).println();
    ps.append(csq, 3, 4).println();
}

//abcd
//bcd
//cd
//d
System.out.println(out);

boolean checkError ()

ストリームをフラッシュし、そのエラー状況を確認します。

final var file = Path.of("R:", "java-work", "sample.txt");

try (final var out = Files.newOutputStream(file);
     final var ps = new PrintStream(out)) {

    ps.println("abcd");
    System.out.println(ps.checkError()); // false

    // エラーを起こすために意図的にcloseします。
    out.close();

    ps.println("abcd");
    System.out.println(ps.checkError()); // true
}

protected void clearError ()

このストリームの内部エラー状態を解除します。

protected メソッドのためAPI使用例は割愛します。

void close ()

ストリームを閉じます。

try-with-resources文を使うことをおすすめします。

final var file = Path.of("R:", "java-work", "sample.txt");

try (final var ps = new PrintStream(file.toFile())) {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
}

closeを直接呼び出す例です。

final var file = Path.of("R:", "java-work", "sample.txt");

final var ps = new PrintStream(file.toFile());
try {
    ps.println("abc");
    ps.println(1234);
    ps.println("あいうえお");
} finally {
    ps.close();
}

void flush ()

ストリームをフラッシュします。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(new BufferedOutputStream(out), false)) {

    ps.print("abc");
    System.out.println(out); // ""

    ps.print(123);
    System.out.println(out); // ""

    ps.flush();
    System.out.println(out); // "abc123"
}

PrintStream format (String format, Object... args)

指定された書式文字列および引数を使用して、書式付き文字列をこの出力ストリームの宛先に書き込みます。

※printfメソッドと同じです。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.format("abcd : %s", "xyz").println();
    ps.format("num = %d", 1234).println();
}

//abcd : xyz
//num = 1234
System.out.println(out);

PrintStream format (Locale l, String format, Object... args)

指定された書式文字列および引数を使用して、書式付き文字列をこの出力ストリームの宛先に書き込みます。

※printfメソッドと同じです。

System.out.println(Locale.getDefault()); // "ja_JP"

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    final var time = LocalTime.of(14, 30);
    ps.format("%tr", time).println();
    ps.format(Locale.ENGLISH, "%tr", time).println();
}

//02:30:00 午後
//02:30:00 PM
System.out.println(out);

void print (boolean b)

boolean型の値を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(true);
    ps.print(" : ");
    ps.print(false);
}

System.out.println(out); // "true : false"

void print (char c)

文字を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print('a');
    ps.print(" : ");
    ps.print('b');
}

System.out.println(out); // "a : b"

void print (char[] s)

文字の配列を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(new char[]{'a', 'b', 'c'});
    ps.print(" : ");
    ps.print(new char[]{'x', 'y', 'z'});
}

System.out.println(out); // "abc : xyz"

void print (double d)

倍精度の浮動小数点数を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(1.234d);
    ps.print(" : ");
    ps.print(7.89e+10d);
}

System.out.println(out); // "1.234 : 7.89E10"

void print (float f)

浮動小数点数を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(1.234f);
    ps.print(" : ");
    ps.print(7.89e+10f);
}

System.out.println(out); // "1.234 : 7.8900003E10"

void print (int i)

整数を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(1234);
    ps.print(" : ");
    ps.print(Integer.MAX_VALUE);
}

System.out.println(out); // "1234 : 2147483647"

void print (long l)

long整数を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(1234L);
    ps.print(" : ");
    ps.print(Long.MAX_VALUE);
}

System.out.println(out); // "1234 : 9223372036854775807"

void print (Object obj)

オブジェクトを出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print(Path.of("R:", "java-work"));
    ps.print(" : ");
    ps.print(LocalTime.of(14, 30));
}

System.out.println(out); // "R:\java-work : 14:30"

void print (String s)

文字列を出力します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.print("abc");
    ps.print(" : ");
    ps.print("xyz");
}

System.out.println(out); // "abc : xyz"

PrintStream printf (String format, Object... args)

書式付き文字列を、指定された書式文字列と引数を使用し、この出力ストリームに書き込む便利な方法です。

※formatメソッドと同じです。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.printf("abcd : %s", "xyz").println();
    ps.printf("num = %d", 1234).println();
}

//abcd : xyz
//num = 1234
System.out.println(out);

PrintStream printf (Locale l, String format, Object... args)

書式付き文字列を、指定された書式文字列と引数を使用し、この出力ストリームに書き込む便利な方法です。

※formatメソッドと同じです。

System.out.println(Locale.getDefault()); // "ja_JP"

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    final var time = LocalTime.of(14, 30);
    ps.printf("%tr", time).println();
    ps.printf(Locale.ENGLISH, "%tr", time).println();
}

//02:30:00 午後
//02:30:00 PM
System.out.println(out);

void println ()

行の区切り文字列を書き込むことで、現在の行を終了させます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {
    ps.print("abc");
    ps.println();
    ps.print(123);
}

//abc
//123
System.out.println(out);

void println (boolean x)

boolean値を出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(true);
    ps.println(false);
}

//true
//false
System.out.println(out);

void println (char x)

文字を出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println('a');
    ps.println('b');
}

//a
//b
System.out.println(out);

void println (char[] x)

文字の配列を出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(new char[]{'a', 'b', 'c'});
    ps.println(new char[]{'x', 'y', 'z'});
}

//abc
//xyz
System.out.println(out);

void println (double x)

doubleを出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(1.234d);
    ps.println(7.89e+10d);
}

//1.234
//7.89E10
System.out.println(out);

void println (float x)

floatを出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(1.234f);
    ps.println(7.89e+10f);
}

//1.234
//7.8900003E10
System.out.println(out);

void println (int x)

整数を出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(1234);
    ps.println(Integer.MAX_VALUE);
}

//1234
//2147483647
System.out.println(out);

void println (long x)

longを出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(1234L);
    ps.println(Long.MAX_VALUE);
}

//1234
//9223372036854775807
System.out.println(out);

void println (Object x)

Objectを出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println(Path.of("R:", "java-work"));
    ps.println(LocalTime.of(14, 30));
}

//R:\java-work
//14:30
System.out.println(out);

void println (String x)

Stringを出力して、行を終了します。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.println("abc");
    ps.println("xyz");
}

//abc
//xyz
System.out.println(out);

protected void setError ()

ストリームのエラー状態をtrueに設定します。

protected メソッドのためAPI使用例は割愛します。

void write (byte[] buf)

指定されたバイト配列のすべてのバイトをこのストリームに書き込みます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.write(new byte[]{1, 2, 3});
    ps.write(new byte[]{100, 101, 102});
}

System.out.println(Arrays.toString(out.toByteArray())); // "[1, 2, 3, 100, 101, 102]"

void write (byte[] buf, int off, int len)

指定されたバイト配列のオフセット位置offから始まるlenバイトをこのストリームに書き込みます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    final byte[] buf = {1, 2, 3, 4};

    ps.write(buf, 0, 1);
    System.out.println(Arrays.toString(out.toByteArray())); // [1]

    ps.write(buf, 0, 2);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 1, 2]

    ps.write(buf, 0, 3);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 1, 2, 1, 2, 3]

    ps.write(buf, 0, 4);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
}
final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    final byte[] buf = {1, 2, 3, 4};

    ps.write(buf, 0, 4);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 2, 3, 4]

    ps.write(buf, 1, 3);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 2, 3, 4, 2, 3, 4]

    ps.write(buf, 2, 2);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 2, 3, 4, 2, 3, 4, 3, 4]

    ps.write(buf, 3, 1);
    System.out.println(Arrays.toString(out.toByteArray())); // [1, 2, 3, 4, 2, 3, 4, 3, 4, 4]
}

void write (int b)

指定されたバイトを、このストリームに書き込みます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.write(0);
    ps.write(100);
    ps.write(127);
    ps.write(255);
    ps.write(256);
}

System.out.println(Arrays.toString(out.toByteArray())); // [0, 100, 127, -1, 0]

void writeBytes (byte[] buf)

指定されたバイト配列のすべてのバイトをこのストリームに書き込みます。

final var out = new ByteArrayOutputStream();
try (final var ps = new PrintStream(out)) {

    ps.writeBytes(new byte[]{1, 2, 3});
    ps.writeBytes(new byte[]{100, 101, 102});
}

System.out.println(Arrays.toString(out.toByteArray())); // [1, 2, 3, 100, 101, 102]

OutputStreamで宣言されたメソッド

nullOutputStream

Java API 使用例 : OutputStream」をご参照ください。


関連記事

ページの先頭へ