gpt4 book ai didi

java - ObjectOutputStream 在 Java Web 服务器中抛出 ObjectOutputStream

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:15 28 4
gpt4 key购买 nike

我正在尝试按照只能处理 GET 查询的指令编写一个最简单的 Java Web 服务器程序。主要思想是从套接字获取一个ObjectOutputStream,使用ObjectInputStream打开本地文件并将其逐字节写入ObjectOutputStream。

serve() 附在下面。它需要一个我想要写入的 ObjectOutputStream 和文件路径作为参数。

public void serve(ObjectOutputStream out, String path) throws IOException {
System.out.println("Trying to serve: " + path);
File file = new File(path);
if (!file.exists()) {
//return an HTTP 404
} else {
out.writeBytes("HTTP/1.1 200 OK\n\n");
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new FileInputStream(file));
int data;
while ((data = in.readByte()) != -1) {
out.writeByte((byte) data);
}
System.out.println("Request valid.");
} catch (IOException e) {
System.out.println("Error in serve(): sending file: " + e.getMessage());
} finally {
if (null != in)
in.close();
}
}
}

但是,当我使用浏览器访问localhost:8080(端口为8080)时,会抛出IOException

 invalid stream header: 3C68746D

我相信它在 out.writeByte((byte) data); 步骤中。你能告诉我为什么以及如何解决它吗?先谢谢了。

最佳答案

ObjectInputStreamObjectOutputStream用于java中的对象序列化。请引用下面的文章来了解这些流的用法。

http://java.sun.com/developer/technicalArticles/Programming/serialization/

对于您的代码,只要找到相应的对象流,您就可以更好地使用 BufferedInputStreamBufferedOutputStream

关于java - ObjectOutputStream 在 Java Web 服务器中抛出 ObjectOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876581/

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