java printstream图像文件

时间:2015-02-19 20:59:24

标签: java sockets

printstream是否适合通过套接字发送图像文件?我正在做一个家庭作业,我必须使用基本套接字从头开始编写Web代理。

当我配置firefox使用我的代理时,除了图像不下载外,一切正常。如果我直接转到图像文件,firefox会返回错误:The image cannot be displayed because it contains errors

这是我的代码,用于将响应从服务器发送回客户端(firefox):

        BufferedReader serverResponse =  new BufferedReader(new InputStreamReader(webServer.getInputStream()));
        String responseLine;
        while((responseLine = serverResponse.readLine()) != null)
        {
            serverOutput.println(responseLine);
        }

在上面的代码中,serverOutput是一个PrintStream对象。我想知道PrintStream是否在破坏数据?

1 个答案:

答案 0 :(得分:2)

不,将字节视为文本永远不合适,除非您知道它们是文本。

具体来说,InputStreamReader将尝试将您的图像(可以将其视为字节数组)解码为String。然后,您的PrintStream将尝试将String编码回字节数组。

无法保证这将产生原始字节数组。如果某些图像字节不是有效的编码字符,您甚至可能会获得异常,具体取决于Java决定使用的编码。