首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectOutputStream在java web服务器中抛出ObjectOutputStream

ObjectOutputStream在java web服务器中抛出ObjectOutputStream
EN

Stack Overflow用户
提问于 2012-08-09 11:56:23
回答 1查看 124关注 0票数 1

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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
 invalid stream header: 3C68746D

我相信它是在out.writeByte((byte) data); step中。你能告诉我为什么和如何修复它吗?谢谢您的支持。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-09 12:13:05

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

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

对于您的代码,无论在哪里找到相应的对象流,您都可以更好地使用BufferedInputStreamBufferedOutputStream

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11876581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档