Java : PrintWriter - API使用例
PrintWriter (Java SE 16 & JDK 16)の使用例まとめです。
だいたいのメソッドを網羅済みです。
公式API仕様のおともにどうぞ。
概要
PrintWriterクラスは
- boolean, int, floatといった基本データ型
- 文字列
- オブジェクト
を便利に書き出すメソッドを持ちます。
final var sw = new StringWriter();
try (final var writer = new PrintWriter(sw)) {
writer.println(1234);
writer.println("abc");
writer.println(LocalTime.of(14, 30));
writer.printf("num = %d", 5678);
}
//1234
//abc
//14:30
//num = 5678
System.out.println(sw);
また、PrintWriterクラスは、一部のコンストラクタを除き、IOExceptionを発生させることはありません。
代わりにcheckErrorメソッドでエラーを確認します。
フィールド
protected Writer out
このPrintWriterのベースとなる文字出力ストリームです。
protected フィールドのためAPI使用例は割愛します。
コンストラクタ
PrintWriter (File file)
行の自動フラッシュは行わずに、指定されたファイルで新しいPrintWriterを作成します。
final var file = Path.of("R:", "java-work", "sample.txt");
try (final var writer = new PrintWriter(file.toFile())) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file));
PrintWriter (File file, String csn)
行の自動フラッシュは行わずに、指定されたファイルと文字セットで新しいPrintWriterを作成します。
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 writer = new PrintWriter(file.toFile(), csn)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file, Charset.forName(csn)));
PrintWriter (File file, Charset charset)
行の自動フラッシュは行わずに、指定されたファイルと文字セットで新しいPrintWriterを作成します。
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 writer = new PrintWriter(file.toFile(), charset)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file, charset));
PrintWriter (OutputStream out)
行の自動フラッシュは行わずに、既存のOutputStreamから新しいPrintWriterを作成します。
final var out = new ByteArrayOutputStream();
try (final var writer = new PrintWriter(out)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(out);
PrintWriter (OutputStream out, boolean autoFlush)
既存のOutputStreamから新しいPrintWriterを作成します。
// autoFlush = false では、printlnやprintf, formatメソッドを呼び出しても
// バッファがフラッシュされません。
final var out = new ByteArrayOutputStream();
try (final var writer = new PrintWriter(out, false)) {
writer.print("abc");
System.out.println(out); // ""
writer.println("def");
System.out.println(out); // ""
writer.printf("num = %d", 1234);
System.out.println(out); // ""
}
//abcdef
//num = 1234
System.out.println(out);
// autoFlush = true では、printlnやprintf, formatメソッドを呼び出すと
// バッファがフラッシュされます。
final var out = new ByteArrayOutputStream();
try (final var writer = new PrintWriter(out, true)) {
// printではバッファはフラッシュされません。
writer.print("abc");
System.out.println(out); // ""
writer.println("def");
System.out.println(out); // "abcdef"
writer.printf("num = %d", 1234);
//abcdef
//num = 1234
System.out.println(out);
}
//abcdef
//num = 1234
System.out.println(out);
PrintWriter (OutputStream out, boolean autoFlush, Charset charset)
既存のOutputStreamから新しいPrintWriterを作成します。
autoFlushについては、PrintWriter(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 writer = new PrintWriter(out, true, charset)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(out.toString(charset));
PrintWriter (Writer out)
行の自動フラッシュは行わずに、新しいPrintWriterを作成します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(out);
PrintWriter (Writer out, boolean autoFlush)
新しいPrintWriterを作成します。
// autoFlush = false では、printlnやprintf, formatメソッドを呼び出しても
// バッファがフラッシュされません。
final var sw = new StringWriter();
try (final var out = new BufferedWriter(sw);
final var writer = new PrintWriter(out, false)) {
writer.print("abc");
System.out.println(sw); // ""
writer.println("def");
System.out.println(sw); // ""
writer.printf("num = %d", 1234);
System.out.println(sw); // ""
}
//abcdef
//num = 1234
System.out.println(sw);
// autoFlush = true では、printlnやprintf, formatメソッドを呼び出すと
// バッファがフラッシュされます。
final var sw = new StringWriter();
try (final var out = new BufferedWriter(sw);
final var writer = new PrintWriter(out, true)) {
// printではバッファはフラッシュされません。
writer.print("abc");
System.out.println(sw); // ""
writer.println("def");
System.out.println(sw); // "abcdef"
writer.printf("num = %d", 1234);
//abcdef
//num = 1234
System.out.println(sw);
}
//abcdef
//num = 1234
System.out.println(sw);
PrintWriter (String fileName)
行の自動フラッシュは行わずに、指定されたファイル名で新しいPrintWriterを作成します。
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 writer = new PrintWriter(fileName)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file));
PrintWriter (String fileName, String csn)
行の自動フラッシュは行わずに、指定されたファイル名と文字セットで新しいPrintWriterを作成します。
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 writer = new PrintWriter(fileName, csn)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file, Charset.forName(csn)));
PrintWriter (String fileName, Charset charset)
行の自動フラッシュは行わずに、指定されたファイル名と文字セットで新しいPrintWriterを作成します。
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 writer = new PrintWriter(fileName, charset)) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
//abc
//1234
//あいうえお
System.out.println(Files.readString(file, charset));
メソッド
PrintWriter append (char c)
指定された文字をこのライターに追加します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.append('a').append('b').append('c');
}
System.out.println(out); // "abc"
PrintWriter append (CharSequence csq)
指定された文字シーケンスをこのライターに追加します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.append("abc").append("-").append("xyz");
}
System.out.println(out); // "abc-xyz"
PrintWriter append (CharSequence csq, int start, int end)
指定された文字シーケンスのサブシーケンスをこのライターに追加します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var csq = "abcd";
writer.append(csq, 0, 1).println();
writer.append(csq, 0, 2).println();
writer.append(csq, 0, 3).println();
writer.append(csq, 0, 4).println();
}
//a
//ab
//abc
//abcd
System.out.println(out);
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var csq = "abcd";
writer.append(csq, 0, 4).println();
writer.append(csq, 1, 4).println();
writer.append(csq, 2, 4).println();
writer.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.newBufferedWriter(file);
final var writer = new PrintWriter(out)) {
writer.println("abcd");
System.out.println(writer.checkError()); // false
// エラーを起こすために意図的にcloseします。
out.close();
writer.println("abcd");
System.out.println(writer.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 writer = new PrintWriter(file.toFile())) {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
}
closeを直接呼び出す例です。
final var file = Path.of("R:", "java-work", "sample.txt");
final var writer = new PrintWriter(file.toFile());
try {
writer.println("abc");
writer.println(1234);
writer.println("あいうえお");
} finally {
writer.close();
}
void flush ()
ストリームをフラッシュします。
final var out = new ByteArrayOutputStream();
try (final var writer = new PrintWriter(out, false)) {
writer.print("abc");
System.out.println(out); // ""
writer.print(123);
System.out.println(out); // ""
writer.flush();
System.out.println(out); // "abc123"
}
PrintWriter format (String format, Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのライターに書き込みます。
※printfメソッドと同じです。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.format("abcd : %s", "xyz").println();
writer.format("num = %d", 1234).println();
}
//abcd : xyz
//num = 1234
System.out.println(out);
PrintWriter format (Locale l, String format, Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのライターに書き込みます。
※printfメソッドと同じです。
System.out.println(Locale.getDefault()); // "ja_JP"
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var time = LocalTime.of(14, 30);
writer.format("%tr", time).println();
writer.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 StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(true);
writer.print(" : ");
writer.print(false);
}
System.out.println(out); // "true : false"
void print (char c)
文字を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print('a');
writer.print(" : ");
writer.print('b');
}
System.out.println(out); // "a : b"
void print (char[] s)
文字の配列を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(new char[]{'a', 'b', 'c'});
writer.print(" : ");
writer.print(new char[]{'x', 'y', 'z'});
}
System.out.println(out); // "abc : xyz"
void print (double d)
倍精度の浮動小数点数を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(1.234d);
writer.print(" : ");
writer.print(7.89e+10d);
}
System.out.println(out); // "1.234 : 7.89E10"
void print (float f)
浮動小数点数を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(1.234f);
writer.print(" : ");
writer.print(7.89e+10f);
}
System.out.println(out); // "1.234 : 7.8900003E10"
void print (int i)
整数を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(1234);
writer.print(" : ");
writer.print(Integer.MAX_VALUE);
}
System.out.println(out); // "1234 : 2147483647"
void print (long l)
long整数を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(1234L);
writer.print(" : ");
writer.print(Long.MAX_VALUE);
}
System.out.println(out); // "1234 : 9223372036854775807"
void print (Object obj)
オブジェクトを出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print(Path.of("R:", "java-work"));
writer.print(" : ");
writer.print(LocalTime.of(14, 30));
}
System.out.println(out); // "R:\java-work : 14:30"
void print (String s)
文字列を出力します。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print("abc");
writer.print(" : ");
writer.print("xyz");
}
System.out.println(out); // "abc : xyz"
PrintWriter printf (String format, Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのライターに書き込む簡易メソッドです。
※formatメソッドと同じです。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.printf("abcd : %s", "xyz").println();
writer.printf("num = %d", 1234).println();
}
//abcd : xyz
//num = 1234
System.out.println(out);
PrintWriter printf (Locale l, String format, Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのライターに書き込む簡易メソッドです。
※formatメソッドと同じです。
System.out.println(Locale.getDefault()); // "ja_JP"
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var time = LocalTime.of(14, 30);
writer.printf("%tr", time).println();
writer.printf(Locale.ENGLISH, "%tr", time).println();
}
//02:30:00 午後
//02:30:00 PM
System.out.println(out);
void println ()
行の区切り文字列を書き込むことで、現在の行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.print("abc");
writer.println();
writer.print(123);
}
//abc
//123
System.out.println(out);
void println (boolean x)
boolean値を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(true);
writer.println(false);
}
//true
//false
System.out.println(out);
void println (char x)
文字を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println('a');
writer.println('b');
}
//a
//b
System.out.println(out);
void println (char[] x)
文字の配列を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(new char[]{'a', 'b', 'c'});
writer.println(new char[]{'x', 'y', 'z'});
}
//abc
//xyz
System.out.println(out);
void println (double x)
倍精度浮動小数点数を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(1.234d);
writer.println(7.89e+10d);
}
//1.234
//7.89E10
System.out.println(out);
void println (float x)
浮動小数点数を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(1.234f);
writer.println(7.89e+10f);
}
//1.234
//7.8900003E10
System.out.println(out);
void println (int x)
整数を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(1234);
writer.println(Integer.MAX_VALUE);
}
//1234
//2147483647
System.out.println(out);
void println (long x)
long型の整数値を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(1234L);
writer.println(Long.MAX_VALUE);
}
//1234
//9223372036854775807
System.out.println(out);
void println (Object x)
Objectを出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println(Path.of("R:", "java-work"));
writer.println(LocalTime.of(14, 30));
}
//R:\java-work
//14:30
System.out.println(out);
void println (String x)
文字列を出力し、行を終了させます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.println("abc");
writer.println("xyz");
}
//abc
//xyz
System.out.println(out);
protected void setError ()
エラーが発生したことを示します。
protected メソッドのためAPI使用例は割愛します。
void write (char[] buf)
文字の配列を書き込みます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.write(new char[]{'a', 'b', 'c'});
writer.write(new char[]{'x', 'y', 'z'});
}
System.out.println(out); // "abcxyz"
void write (char[] buf, int off, int len)
文字の配列の一部を書き込みます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final char[] buf = {'a', 'b', 'c', 'd'};
writer.write(buf, 0, 1);
writer.println();
writer.write(buf, 0, 2);
writer.println();
writer.write(buf, 0, 3);
writer.println();
writer.write(buf, 0, 4);
writer.println();
}
//a
//ab
//abc
//abcd
System.out.println(out);
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final char[] buf = {'a', 'b', 'c', 'd'};
writer.write(buf, 0, 4);
writer.println();
writer.write(buf, 1, 3);
writer.println();
writer.write(buf, 2, 2);
writer.println();
writer.write(buf, 3, 1);
writer.println();
}
//abcd
//bcd
//cd
//d
System.out.println(out);
void write (int c)
単一の文字を書き込みます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.write('a');
writer.write('b');
writer.write('c');
}
System.out.println(out); // "abc"
void write (String s)
文字列を書き込みます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
writer.write("abc");
writer.write("xyz");
}
System.out.println(out); // "abcxyz"
void write (String s, int off, int len)
文字列の一部を書き込みます。
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var s = "abcd";
writer.write(s, 0, 1);
writer.println();
writer.write(s, 0, 2);
writer.println();
writer.write(s, 0, 3);
writer.println();
writer.write(s, 0, 4);
writer.println();
}
//a
//ab
//abc
//abcd
System.out.println(out);
final var out = new StringWriter();
try (final var writer = new PrintWriter(out)) {
final var s = "abcd";
writer.write(s, 0, 4);
writer.println();
writer.write(s, 1, 3);
writer.println();
writer.write(s, 2, 2);
writer.println();
writer.write(s, 3, 1);
writer.println();
}
//abcd
//bcd
//cd
//d
System.out.println(out);
Writerで宣言されたメソッド
nullWriter
「Java API 使用例 : Writer」をご参照ください。