java 打印流图像文件

java printstream image file

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 是否以某种方式破坏了数据?

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

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

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