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 决定使用的编码方式。
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 决定使用的编码方式。