Mam InputStream
, który muszę dodać znaki na początku i na końcu, i powinien skończyć z inną zmienną typu InputStream
. Jak mogłem to łatwo zrobić?Dodawanie znaków do początku i końca InputStream w Javie
Odpowiedz
Chcesz SequenceInputStream i kilka ByteArrayInputStream s. Możesz użyć String.getBytes, aby utworzyć bajty dla tego ostatniego. SequenceInputStream jest stare, więc to trochę niezgrabne używać:
InputStream middle ;
String beginning = "Once upon a time ...\n";
String end = "\n... and they lived happily ever after.";
List<InputStream> streams = Arrays.asList(
new ByteArrayInputStream(beginning.getBytes()),
middle,
new ByteArrayInputStream(end.getBytes()));
InputStream story = new SequenceInputStream(Collections.enumeration(streams));
Jeśli masz dużo znaków dodać, a nie chcą konwertować je do bajtów masowo, można umieścić je w StringReader, a następnie użyj ReaderInputStream z Commons IO, aby odczytać je jako bajty. Ale aby to zrobić, musisz dodać Commons IO do swojego projektu. Dokładny kod dla tego jest pozostawiony jako ćwiczenie dla czytelnika.
1 Utwórz nowy OutputStream
, poparty tablicą bajtów, zgodnie z sugestią Grega.
2 Napisz początkowe znaki do nowego OutputStream
.
3 Skopiuj istniejącą wersję InputStream
do nowego urządzenia OutputStream
.
4 Napisz znaki kończące do nowego OutputStream
.
5 Zamknij nowy OutputStream
, uważając, aby zachować tablicę tylną.
6 Otwórz szufladę jako nowy InputStream
.
Daj nam znać, jeśli masz problem z którymkolwiek z tych kroków.
Jak pisać znaki do obiektu InputStream? –
-1, Napisz końcowe znaki do nowego InputStream. -> nie możesz pisać znaków do InputStream – GBa
Whoops! Ponownie uruchamia mózg. Napisz do strumienia wyjściowego, wspieranego przez tablicę bajtów, jak mówi Greg. Wyodrębnij tablicę i otwórz ponownie jako strumień wejściowy. Dziękuję za poprawienie mnie. – rossum
- 1. Dodawanie znaku do początku i końca ciągu znaków
- 2. Usuń cytaty z początku i końca łańcucha znaków w PHP
- 3. Przycinanie białych znaków w ciągach Dart od początku lub końca
- 4. Usuwanie spacji z początku i końca ciągu
- 5. Grep dla początku i końca linii?
- 6. Vim: Idź do początku/końca następnej metody
- 7. Iterowanie wektora C++ od końca do początku
- 8. Skrót Eclipse do końca linii i początku linii
- 9. Jak przejść do początku lub końca pliku w Android Studio?
- 10. Performing selektor na początku/końca pętli biegu
- 11. Android: Dodawanie statycznego nagłówka do początku ListActivity
- 12. CSS 3: Dodawanie cytatu do początku cytowania
- 13. Dodawanie zer na początku ciągu znaków (maksymalna długość 4 znaki)
- 14. Usuń znacznik jonowy z początku i końca ramki jonowej 2
- 15. Niesymetryczne wywołania przejść do początku/końca dla UITabBarController
- 16. Dodawanie dni do daty w Javie
- 17. usuń wszystkie ograniczniki na początku i końcu ciągu znaków
- 18. Dodawanie liczby całkowitej do początku listy w Pythonie
- 19. Przesyłanie znaków w Javie
- 20. Usuń n znaków od początku ciągu znaków
- 21. Dodawanie znaków char i int
- 22. C# dodanie podwójnych cudzysłowów do początku i końca ciągu JSON skutkuje błędem dekodowania serwera
- 23. Konwersja InputStream do strumienia <String> danym ciągiem znaków
- 24. Mocking HttpPostedFileBase i InputStream do jednostki testu
- 25. rozpakowane pliki na początku się konfiguracji zamiast końca
- 26. Dodawanie elementu do początku tablicy bez zmiany innych kluczy tablicy
- 27. Jak usunąć białą przestrzeń od początku ciągu?
- 28. Dzielenie łańcucha znaków w Javie
- 29. Dodaj do początku metody NSString
- 30. Automatyczne znajdowanie początku i końca tygodnia pracy w arkuszu kalkulacyjnym Google
Więcej szczegółów, proszę? Dzięki za poręczne nazwy klas. – pqn
Jeśli czytasz javadoc dla tych klas, jest to dość oczywiste. Skonstruuj pierwszy obiekt ByteArrayInputStream (nazwijmy go nagłówkiem) zawierający bajty początku, drugi zawierający bajty końca (nazwijmy go ogonem) i zbuduj ciąg SequenceInputStream z głowy, pierwotnego strumienia wejściowego i ogona. –
Dziękujemy! Udało mi się teraz to zrobić. – pqn