Java : StringWriter - API使用例

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


概要

出力を文字列バッファに集める文字ストリームです。この文字列バッファを使って文字列を構築します。

クラス構成

StringWriter は、Writer としての出力結果を StringBuffer へと集めるクラスです。

final var writer = new StringWriter();

writer.write("abcd");
writer.write('-');
writer.write("XYZ");

System.out.println(writer); // abcd-XYZ
final var writer = new StringWriter();

final var ret = writer.append("ABCD").append('-').append("xyz");
System.out.println(ret); // ABCD-xyz

StringWriterを閉じても、何の影響もありません。 IOExceptionを生成せずにストリームが閉じられたあとで、このクラスのメソッドを呼び出すことができます。

StringWriter は Closeable を実装しますが、close を呼び出さなくても影響はありません。
本記事でも close の呼び出しは基本的に省いています。


Writerで宣言されたフィールド

lock

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

コンストラクタ

StringWriter ()

デフォルトの初期文字列バッファ・サイズを使って、新しい文字列ライターを作成します。

final var writer = new StringWriter();

writer.write("abcd");
writer.write('-');
writer.write("XYZ");

System.out.println(writer); // abcd-XYZ

StringWriter (int initialSize)

指定された初期文字列バッファ・サイズを使って、新しい文字列ライターを作成します。

final var writer1 = new StringWriter();
System.out.println(writer1.getBuffer().capacity()); // 16

final var writer2 = new StringWriter(128);
System.out.println(writer2.getBuffer().capacity()); // 128

メソッド

StringWriter append (char c)

指定された文字をこのライターに追加します。

final var writer = new StringWriter();

System.out.println(writer.append('a')); // a
System.out.println(writer.append('b')); // ab
System.out.println(writer.append('X').append('Y').append('Z')); // abXYX

StringWriter append (CharSequence csq)

指定された文字シーケンスをこのライターに追加します。

final var writer = new StringWriter();

final var ret = writer.append("abc").append("XYZ");
System.out.println(ret); // abcXYZ
final var writer = new StringWriter();

final CharSequence csq1 = "abc";

System.out.println(writer.append(csq1)); // abc

final var sb = new StringBuilder();
final CharSequence csq2 = sb;

sb.append("XY");
System.out.println(writer.append(csq2)); // abcXY

sb.append("Z");
System.out.println(writer.append(csq2)); // abcXYXYZ

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

指定された文字シーケンスのサブシーケンスをこのライターに追加します。

final var csq = "abcd";

System.out.println(new StringWriter().append(csq, 0, 1)); // a
System.out.println(new StringWriter().append(csq, 0, 2)); // ab
System.out.println(new StringWriter().append(csq, 0, 3)); // abc
System.out.println(new StringWriter().append(csq, 0, 4)); // abcd
//new StringWriter().append(csq, 0, 5); // StringIndexOutOfBoundsException
final var csq = "abcd";
System.out.println(new StringWriter().append(csq, 0, 4)); // abcd
System.out.println(new StringWriter().append(csq, 1, 4)); // bcd
System.out.println(new StringWriter().append(csq, 2, 4)); // cd
System.out.println(new StringWriter().append(csq, 3, 4)); // d

void close ()

StringWriterを閉じても、何の影響もありません。

final var writer = new StringWriter();

// なんの影響もありません。
writer.close();

// close後も各メソッドを呼び出せます。
writer.append("abcd");
System.out.println(writer); // abcd

void flush ()

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

final var writer = new StringWriter();

writer.append("abc");
System.out.println(writer);

// StringWriterのflushはなんの影響もありません。
writer.flush();

writer.append("XYZ");
System.out.println(writer); // abcXYZ

StringBuffer getBuffer ()

文字列バッファそのものを返します。

final var writer = new StringWriter();

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

final var buffer = writer.getBuffer();
System.out.println(buffer); // abc

buffer.append(123);
buffer.append("XYZ");

System.out.println(buffer); // abc123XYZ
System.out.println(writer); // abc123XYZ

String toString ()

バッファの現在の値を文字列として返します。

final var writer = new StringWriter();

writer.append("abc");

final var ret1 = writer.toString();
System.out.println(ret1); // abc

writer.append("XYZ");

final var ret2 = writer.toString();
System.out.println(ret2); // abcXYZ

void write (char[] cbuf, int off, int len)

文字の配列の一部を書き込みます。

final char[] cbuf = {'a', 'b', 'c', 'd'};

{
    final var writer = new StringWriter();
    writer.write(cbuf, 0, 1);
    System.out.println(writer); // a
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 0, 2);
    System.out.println(writer); // ab
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 0, 3);
    System.out.println(writer); // abc
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 0, 4);
    System.out.println(writer); // abcd
}
{
    final var writer = new StringWriter();
    //writer.write(cbuf, 0, 5); // IndexOutOfBoundsException
}
final char[] cbuf = {'a', 'b', 'c', 'd'};

{
    final var writer = new StringWriter();
    writer.write(cbuf, 0, 4);
    System.out.println(writer); // abcd
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 1, 3);
    System.out.println(writer); // bcd
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 2, 2);
    System.out.println(writer); // cd
}
{
    final var writer = new StringWriter();
    writer.write(cbuf, 3, 1);
    System.out.println(writer); // d
}

void write (int c)

単一の文字を書き込みます。

final var writer = new StringWriter();

writer.write('a');
System.out.println(writer); // a

writer.write('b');
System.out.println(writer); // ab

writer.write('X');
System.out.println(writer); // abX

writer.write('Y');
System.out.println(writer); // abXY

writer.write('Z');
System.out.println(writer); // abXYZ

void write (String str)

文字列を書き込みます。

final var writer = new StringWriter();

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

writer.write("XYZ");
System.out.println(writer); // abcXYZ

void write (String str, int off, int len)

文字列の一部を書き込みます。

final var str = "abcd";

{
    final Writer writer = new StringWriter();
    writer.write(str, 0, 1);
    System.out.println(writer); // a
}
{
    final Writer writer = new StringWriter();
    writer.write(str, 0, 2);
    System.out.println(writer); // ab
}
{
    final Writer writer = new StringWriter();
    writer.write(str, 0, 3);
    System.out.println(writer); // abc
}
{
    final Writer writer = new StringWriter();
    writer.write(str, 0, 4);
    System.out.println(writer); // abcd
}
{
    final Writer writer = new StringWriter();
    //writer.write(str, 0, 5); // IndexOutOfBoundsException
}
final var str = "abcd";

{
    final Writer writer = new StringWriter();
    writer.write(str, 0, 4);
    System.out.println(writer); // abcd
}
{
    final Writer writer = new StringWriter();
    writer.write(str, 1, 3);
    System.out.println(writer); // bcd
}

{
    final Writer writer = new StringWriter();
    writer.write(str, 2, 2);
    System.out.println(writer); // cd
}
{
    final Writer writer = new StringWriter();
    writer.write(str, 3, 1);
    System.out.println(writer); // d
}

Writerで宣言されたメソッド

nullWriter, write

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


関連記事

ページの先頭へ