Print Writer在用于将文件上载到服务器时会损坏文件

时间:2013-02-12 14:54:00

标签: java servlets printwriter

晚上好,今天我遇到了一个奇怪的情况,当我使用Print Writer将文件上传到服务器时,文件被转移我尝试使用FileOutPutStream而不是它解决了问题,我的问题是为什么{{ 1}}做了那种奇怪的行为,这里是我上传文件并将其保存在服务器上的代码:

PrintWriter

2 个答案:

答案 0 :(得分:3)

您需要了解Writers和OutputStreams之间的区别。 PrintWriter.write(int)正在编写字符,而FileOutputStream.write(int)正在编写字节。你不小心将字节转换为字符,这破坏了你的文件。一般来说,当只是复制流时,你想要坚持使用字节。

答案 1 :(得分:1)

PrintWriter将使用默认编码创建一个Writer,而FileOutputStream将简单地写出原始字节。如果您的原始内容和服务器端使用相同的编码,那么写入字节并重新解释它们就不会有问题。但是,当您使用PrintWriter时,会使用默认的系统编码,这可能会破坏您的数据。