Mam funkcję, która przyjmuje obiekt określonego typu i PrintStream
do którego ma zostać wydrukowany i wyprowadza reprezentację tego obiektu. Jak mogę przechwycić dane wyjściowe tej funkcji w ciągu? W szczególności chcę go używać jako toString
metody.
java
string
printstream
Nick Heiner
źródło
źródło
PrintStream ps = new PrintStream(baos,true,"utf-8");
aby uniknąć chaosu kodowania znakównew String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
dostępne od 1.7 , nie rzuca sięByteArrayOutputStream.close()
„ nie ma wpływu ”, ponieważ nie ma żadnych zasobów do zwolnienia poza tablicą zapasową, którą zajmie się garbage collector.ByteArrayOutputStream
matoString(String charsetName)
, ale akceptuje tylko argument String. Zwróć również uwagę, że ByteArrayOutputStream jest zsynchronizowany , co prawdopodobnie nie jest pożądaneMożesz skonstruować PrintStream z ByteArrayOutputStream przekazanym do konstruktora, którego możesz później użyć do pobrania tekstu zapisanego do PrintStream.
źródło
Ujednolicenie poprzednich odpowiedzi, ta odpowiedź działa z Javą 1.7 i późniejszymi. Dodałem również kod zamykający strumienie.
źródło
Może to pytanie może ci pomóc: Pobierz OutputStream do String
Podklasa OutputStream i zawiń ją w PrintStream
źródło
Zdefiniuj i zainicjuj zmienną Scanner o nazwie inSS, która tworzy wejściowy strumień ciągu przy użyciu zmiennej String myStrLine.
Odp: Skaner inSS = nowy skaner (myStrLine);
źródło