JAVA массив байт в объект

129
18 сентября 2018, 17:20

При чтении ObjectInputStream получаю EOFException, думал сначала что это как метка, что достигнут конец, но объект так и не считался?

Поэтому нужен другой способ!

   @Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    ByteBuf in = (ByteBuf) msg;
    byte[] buf = new byte[in.readableBytes()];
    in.readBytes(buf);
    Packet packet = null;
    try(ByteArrayInputStream b = new ByteArrayInputStream(buf)){
        try(ObjectInputStream o = new ObjectInputStream(b)){
            packet = (Packet) o.readObject();
        }catch (EOFException e){
            e.printStackTrace();
        }
    }
    if (!packet.getKey().isEmpty() && packet.getValue() != null){
        try {
            this.cache.addItem(packet.getKey(),packet.getValue());
        } catch (Exception e){
            e.printStackTrace();
        }catch (OutOfMemoryError e){
            this.cache.saveRelease();
        }
    }
    if(!packet.getKey().isEmpty() && packet.getValue() == null){
        ctx.write(this.cache.getItem(packet.getKey()));
    }
}
Answer 1

Лично я использую такие методы:

public static byte[] objectToByteArray(Object obj) throws Exception
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    try
    {
        oos.writeObject(obj);
        return baos.toByteArray();
    }
    catch (Exception e)
    {
        throw e;
    }
    finally
    {
        oos.close();
        baos.close();
    }
}
public static Object byteArrayToObject(byte[] byteArray) throws Exception
{
    ByteArrayInputStream baos = new ByteArrayInputStream(byteArray);
    ObjectInputStream oos = new ObjectInputStream(baos);
    try
    {
        return oos.readObject();
    }
    catch (Exception e)
    {
        throw e;
    }
    finally
    {
        oos.close();
        baos.close();
    }
}

Можете попробовать:

try
{
    packet = (Packet) byteArrayToObject(buf);
}
catch(Exception e)
{
    //Exceptions handling
}
READ ALSO
Как закруглить фоновое изображение? [закрыт]

Как закруглить фоновое изображение? [закрыт]

Как закруглить углы у background-image? Есть-ли какое-нибудь свойство?

136
Разделить строку с помощью js

Разделить строку с помощью js

Есть такая строка: Пн: 10:00-19:00 Вт: 10:00-19:00 Ср: 10:00-19:00 Чт: 10:00-19:00 Пт: 10:00-19:00 Сб: 09:00-17:00 Вс: Вихідний Всё идёт в рядМне нужно как-то вывести строку, чтобы...

245
Как передать параметры в View React Native

Как передать параметры в View React Native

Не давно начал изучение react nativeИ столкнулся с проблемой

168