Załóżmy, że mam OutputStream
(, a nieObjectOutputStream
). Czy można wysłać serializowany obiekt przy użyciu metody zapisu? Dzięki!Serializuj obiekt z strumieniem wyjściowym
Odpowiedz
tutaj jest to, co zrobić, aby serializować obiektu
new ObjectOutputStream(outputStream).writeObject(obj);
jeśli chcesz kontrolować Bajt [] Wyjście
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(buffer);
oos.writeObject(obj);
oos.close();
byte[] rawData = buffer.toByteArray();
ps. thx do komentarzy poniżej, edytowany jako odpowiednio
Powinieneś dodać także tekst opisowy, aby nie była to poprawna odpowiedź, ale także dobry. –
Potrzebujesz 'writeObject()', a nie 'write()'. I byłoby przydatne wywołanie 'flush()'. –
Musisz użyć klasy ObjectOutputStream i jej metod do obiektów *serialize*
. Faktycznie ObjectOutputStream
jest podklasą java.io.OutputStream
(Jest to abstrakcyjna super klasa strumieni zorientowanych na bajty). Spójrz na artykuł na Java Serialization API.
EDIT: Można użyć XMLEncoder
(z Doc: Klasa XMLEncoder jest komplementarna alternatywą ObjectOutputStream i może być używany do generowania tekstowy reprezentacji z JavaBeans w taki sam sposób, że ObjectOutputStream mogą być użyte do wygenerowania binarną reprezentację serializacji obiektów)
istnieje więcej niż jeden sposób serializowania obiektu; nie musisz używać ObjectOutputStream – Hachi
Można użyć ObjectOutputStream do "przechwytywania" danych obiektów w tablicy bajtowej i wysłać ją do OutputStream.
String s = "test";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(s);
byte[] byteArray = baos.toByteArray();
for (byte b : byteArray) {
System.out.print((char) b);
}
Inną nietypową opcją byłoby serializowanie obiektu w reprezentacji ciągów np. CSV
To jest trywialne: można po prostu zawinąć oryginalnego OutputStream
w nowym ObjectOutputStream
, a następnie za pomocą specjalistycznych metod ObjectOutputStream
:
OutputStream myOriginalOutputStream = ...;
ObjectOutputStream oos = new ObjectOutputStream(myOriginalOutputStream);
oos.writeObject(new MyObject());
oos.flush();
oos.close();
Wewnętrznie ObjectOutputStream
wezwie write()
metoda na OutputStream
bazowe „s.
- 1. Serializuj obiekt do XML
- 2. Serializuj obiekt Java do kodu Java?
- 3. Serializuj obiekt .net i pomiń typ dokumentu?
- 4. Różnica między strumieniem pamięci a strumieniem filaru
- 5. ExecuteSqlCommand z parametrem wyjściowym
- 6. Serializuj obiekt w języku C# i pobierz strumień bajtów.
- 7. NodeJS: Jaka jest różnica między strumieniem Duplex a strumieniem Transform?
- 8. Serializuj wiele formularzy jednocześnie?
- 9. Łączenie ze strumieniem danych UDP z Mathematica
- 10. Kto manipuluje moim strumieniem danych?
- 11. Formularze Yesod ze strumieniem strony
- 12. Włącz zarządzanie strumieniem asmack android
- 13. Serializuj słownik Pythona do XML
- 14. Różnica między strumieniem strstream i stringami
- 15. Powracający SqlXml zainicjalizowany ze strumieniem pamięci
- 16. Serializuj obiekt bezpośrednio do JObject zamiast do łańcucha znaków w json.net
- 17. Jak korzystać z ExifInterface ze strumieniem lub identyfikatorem URI
- 18. Dlaczego moja praca nie działa z moim strumieniem
- 19. Serializuj stan obliczeń MD5 i wznów później?
- 20. iOS: Serializuj/Deserializuj złożony JSON generalnie z klasy NSObject
- 21. Zakres oparte pętli nad strumieniem wejściowym
- 22. Różnica między iteratorem a strumieniem w Scali?
- 23. Serializuj tylko proste typy przy użyciu Json.Net
- 24. Serializuj do fragmentu XML - nie do dokumentu XML
- 25. Jak działają nagłówki z buforowaniem wyjściowym w PHP?
- 26. Używanie Babel z jednym plikiem wyjściowym i modułami ES6
- 27. ASP.NET MVC - Typesafe Html.TextBoxFor z innym modelem wyjściowym
- 28. Sqlcmd końcowe spacje w pliku wyjściowym
- 29. Uzyskiwanie kąta między punktem a punktem wyjściowym
- 30. Dlaczego zagnieżdżone w wyjściowym każdy szablon nic
możesz napisać dowolne dane za pomocą OutputStream. najprostszy jest uczynienie bajtu [] twojego obiektu. – Hachi