При чтении 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()));
}
}
Лично я использую такие методы:
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
}
Как закруглить углы у background-image? Есть-ли какое-нибудь свойство?
Есть такая строка: Пн: 10:00-19:00 Вт: 10:00-19:00 Ср: 10:00-19:00 Чт: 10:00-19:00 Пт: 10:00-19:00 Сб: 09:00-17:00 Вс: Вихідний Всё идёт в рядМне нужно как-то вывести строку, чтобы...
Не давно начал изучение react nativeИ столкнулся с проблемой