Mam ten kod w Javie:Czytaj wiersz tekstu ze strumienia wejściowego w Javie utrzymując znak (ów) line-terminacji
InputStreamReader isr = new InputStreamReader(getInputStream());
BufferedReader ir = new BufferedReader(isr);
String line;
while ((line = ir.readLine()) != null) {
//do stuff with "line"
}
Jeśli strumień wejściowy zawiera następujące elementy: „cześć \ nhey \ ryo \ r \ ngood-day”, a następnie zmienna linia byłaby po każdej iteracji:
- cześć
- hej
- yo
- dobry-da y
Chcę przeczytać jeden wiersz na raz, ale chcę zachować charakter line-terminacji (s):
- cześć \ n
- hej \ r
- yo \ r \ n
- dobry dzień
Jak mogę to zrobić? Czy mogę skorzystać z gotowych zajęć?
-
Aktualizacja:
Oto, co usiłuję zrobić i dlaczego muszę zachować charakter end-of-line (i dlaczego postać EOL może być inna).
Czytam żądanie POST. Składają się z czystych wiadomości tekstowych, w których wiersze zawsze kończą się \ r \ n (według standardowej specyfikacji). Jednak żądanie POST może zawierać dane binarne, które mogą zawierać bajty, które wyglądają jak znaki kończące na obiektach Java Reader.
W moim przykładzie trwa przesyłanie obrazu. Dane obrazu są wysyłane w jednym wierszu. Jednak dane binarne obrazu zawierają bajty, które CZYTNIK powinien interpretować jako "\ n", "\ r" lub czasami "\ r \ n", jeśli te dwa bajty znajdują się obok siebie.
Muszę przeczytać żądanie POST po jednej linii, ponieważ tak to działa. Przypuszczam, że mógłbym przeczytać wszystko, a następnie przeanalizować całość. Ale to nie jest wydajne, zwłaszcza jeśli przesyłany jest duży plik (na przykład 1024 MB).
Jeśli nie możesz znaleźć lepszego rozwiązania, możesz zaimplementować 'readLine' używając' BufferedReader.read() 'w pętli' while'. – pts
Miałem nadzieję, że ta bardzo podstawowa czynność została już wykonana, można by pomyśleć, że mogliby ją sformułować tak, aby metoda readLine() BufferedReadera przyjęła wartość boolowską - jeśli jest prawdziwa, to również zawierałaby znak (znaki) separatora linii i gdyby było fałszywe, zachowywałoby się tak, jak w tej chwili. – Mike
Czy szczególny charakter końcowy jest ważny do zachowania? Ponieważ pierwszą rzeczą, o której pomyślałem, było właśnie dodanie '\ n' do linii – TheLQ