В этой статье показано, как преобразовать объект в байт[]
или массив байтов и наоборот в Java.
1. Преобразование объекта в байт[]
В приведенном ниже примере показано, как использовать ByteArrayOutputStream
и ObjectOutputStream
для преобразования объекта в байт[]
.
// Convert object to byte[] public static byte[] convertObjectToBytes(Object obj) { ByteArrayOutputStream boas = new ByteArrayOutputStream(); try (ObjectOutputStream ois = new ObjectOutputStream(boas)) { ois.writeObject(obj); return boas.toByteArray(); } catch (IOException ioe) { ioe.printStackTrace(); } throw new RuntimeException(); } // Convert object to byte[] public static byte[] convertObjectToBytes2(Object obj) throws IOException { ByteArrayOutputStream boas = new ByteArrayOutputStream(); try (ObjectOutputStream ois = new ObjectOutputStream(boas)) { ois.writeObject(obj); return boas.toByteArray(); } }
2. Преобразовать байт[] возражать
В приведенном ниже примере показано, как использовать ByteArrayInputStream
и ObjectInputStream
для преобразования байт []
вернуться к объекту.
// Convert byte[] to object public static Object convertBytesToObject(byte[] bytes) { InputStream is = new ByteArrayInputStream(bytes); try (ObjectInputStream ois = new ObjectInputStream(is)) { return ois.readObject(); } catch (IOException | ClassNotFoundException ioe) { ioe.printStackTrace(); } throw new RuntimeException(); } // Convert byte[] to object public static Object convertBytesToObject2(byte[] bytes) throws IOException, ClassNotFoundException { InputStream is = new ByteArrayInputStream(bytes); try (ObjectInputStream ois = new ObjectInputStream(is)) { return ois.readObject(); } } // Convert byte[] to object with filter public static Object convertBytesToObjectWithFilter(byte[] bytes, ObjectInputFilter filter) { InputStream is = new ByteArrayInputStream(bytes); try (ObjectInputStream ois = new ObjectInputStream(is)) { // add filter before readObject ois.setObjectInputFilter(filter); return ois.readObject(); } catch (IOException | ClassNotFoundException ioe) { ioe.printStackTrace(); } throw new RuntimeException(); }
Дальнейшее Чтение
- Примеры сериализации и десериализации Java
Скачать Исходный Код
$клон git https://github.com/mkyong/core-java.git
$cd java-ввод-вывод/com/mkyong/ввод-вывод/объект
Рекомендации
- Файл в байт[]
- Поток ввода объектов javadoc
- Поток вывода объектов javadoc
- Поток вывода javadoc ByteArrayOutputStream
- Поток ввода javadoc ByteArrayInputStream
- OWASP – Десериализация ненадежных данных
- Брайан Гетц – К Лучшей Сериализации
Оригинал: “https://mkyong.com/java/convert-object-to-byte-in-java/”