У меня есть функция, которая принимает объект определенного типа и объект PrintStream
для печати, и выводит представление этого объекта. Как я могу записать вывод этой функции в строку? В частности, я хочу использовать его как toString
метод.
java
string
printstream
Ник Хайнер
источник
источник
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 синхронизирован , что, вероятно, нежелательноВы можете создать PrintStream с ByteArrayOutputStream, переданным в конструктор, который позже можно использовать для захвата текста, записанного в PrintStream.
источник
Объединяя предыдущие ответы, этот ответ работает с Java 1.7 и более поздними версиями. Также я добавил код для закрытия Streams.
источник
Возможно, этот вопрос может помочь вам: получить OutputStream в строке
Подкласс OutputStream и оберните его в PrintStream
источник
Определите и инициализируйте переменную сканера с именем inSS, которая создает поток входной строки с помощью строковой переменной myStrLine.
Ответ: Scanner inSS = new Scanner (myStrLine);
источник