回答:
をByteArrayOutputStream
バッファとして使用します。
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final String utf8 = StandardCharsets.UTF_8.name();
try (PrintStream ps = new PrintStream(baos, true, utf8)) {
yourFunction(object, ps);
}
String data = baos.toString(utf8);
PrintStream ps = new PrintStream(baos,true,"utf-8");
文字セットの混乱を避けるために使用することをお勧めします
new String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
以降で使用できますが、スローされません
ByteArrayOutputStream.close()
「何の効果もありませんガベージコレクタによって対処される補助配列のほかに解放するリソースがないよう、」。
ByteArrayOutputStream
はを持っていますがtoString(String charsetName)
、String引数のみを受け入れます。またByteArrayOutputStreamがされていることに注意同期恐らく望ましくないとする、
以前の回答を統合したこの回答は、Java 1.7以降で機能します。また、ストリームを閉じるためのコードを追加しました。
final Charset charset = StandardCharsets.UTF_8;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos, true, charset.name());
yourFunction(object, ps);
String content = new String(baos.toByteArray(), charset);
ps.close();
baos.close();
多分この質問はあなたを助けるかもしれません:出力 ストリームを文字列に入れる
OutputStreamをサブクラス化してPrintStreamでラップする
文字列変数myStrLineを使用して入力文字列ストリームを作成するinSSという名前のScanner変数を定義して初期化します。
回答:Scanner inSS = new Scanner(myStrLine);