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
是否在破坏数据?
答案 0 :(得分:2)
不,将字节视为文本永远不合适,除非您知道它们是文本。
具体来说,InputStreamReader将尝试将您的图像(可以将其视为字节数组)解码为String。然后,您的PrintStream将尝试将String编码回字节数组。
无法保证这将产生原始字节数组。如果某些图像字节不是有效的编码字符,您甚至可能会获得异常,具体取决于Java决定使用的编码。