gpt4 book ai didi

java - ObjectInputStream 文件结束异常忽略打印语句

转载 作者:行者123 更新时间:2023-12-01 10:45:45 25 4
gpt4 key购买 nike

我正在通过 java 套接字将文件从 Google glass 设备读取到 PC。由于 catch 语句抛出 eof 异常,我的其余代码被忽略。我该如何解决这个问题?

代码:接收图像(并将其放入简单的jfame中)

ObjectInputStream inFromServer = new ObjectInputStream(
clientimage.getInputStream());

System.out.println("infrom: " + inFromServer.readObject() + "\n");

System.out.println("infrom bytes: " + inFromServer.readByte() + "\n");
System.out.println("infrom something: " + inFromServer.readUTF());


File temp = (File) inFromServer.readObject();
BufferedImage image = ImageIO.read(temp);
System.out.println("image height: " + image.getHeight());


JFrame frame = new JFrame();
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200,200);
f.setVisible(true);

客户端正在拍照并将文件发送到PC:

Socket pic_socket = new Socket(ip, 50505);
ObjectOutputStream imageToServer = new ObjectOutputStream(pic_socket.getOutputStream());
imageToServer.writeObject(pictureToSend.getAbsoluteFile());
imageToServer.close();

我的输出是:

Connection starting ..
image srv connected to: /192.168.1.104
infrom: \storage\emulated\0\DCIM\Camera\20151209_110536_982.jpg

最佳答案

您显示的输出表明该行正在运行:

System.out.println("infrom: "  + inFromServer.readObject() + "\n");

这一行抛出异常:

System.out.println("infrom bytes: " + inFromServer.readByte() + "\n");

这是有道理的,因为您只编写一个对象,然后关闭流。您的代码应该是:

File temp;
try (ObjectInputStream inFromServer =
new ObjectInputStream(clientimage.getInputStream()) {
temp = (File) inFromService.readObject();
}
System.out.println("infrom: " + temp + "\n");

...然后删除对 readByte()readUTF() 的调用。它们对应于尚未写入的数据。请注意,使用上面的代码,您也只调用 readObject() 一次,这一点至关重要,因为只写入了一个对象。

关于java - ObjectInputStream 文件结束异常忽略打印语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com