java - 以 byte[] 形式读取二进制文件并以 char[] 形式从 servlet 发送

标签 java

我有一个读取二进制文件并将其发送给客户端的 servlet。

byte[] binaryData = FileUtils.readFileToByteArray(path);
response.getWriter().print(new String(binaryData));

它适用于非二进制文件。当我有一个 BINARY 文件时,我得到 receive file length bigger than origin or received file not the same。如何读取和发送二进制数据?

谢谢。

最佳答案

不是通过Writer。编写器用于文本 数据,而不是二进制数据。您当前的代码正在尝试使用系统默认编码将任意二进制数据解释为文本。这真是个糟糕的主意。

您需要一个输出流 - 所以使用 response.getOutputStream(),并将二进制数据写入其中:

response.getOutputStream().write(FileUtils.readFileToByteArray(path));

关于java - 以 byte[] 形式读取二进制文件并以 char[] 形式从 servlet 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085760/

相关文章:

java - 将 groovy 添加到目标平台

java - 为什么 JPA/Hibernate 事务处于 Activity 状态,即使我没有显式启动事务

java - DataException 无法执行查询

java - 启动一个新屏幕( Activity )而不是替换当前屏幕

java - Hibernate 不会将 float 正确写入 MS SQL 2005 数据库

在 fragment 中声明 findViewById 后出现 java.lang.NullpointerException

java - 示例含义上的 CPU 使用情况以及在您的套件上获取准确的状态时间

java - 为什么 getSystemService(string) 方法只是 Activity 类中的一个 stub ?

java - 使用 JRI 赋值时出现奇怪的行为

java - 在适用于 Windows 的最新 IE、Chrome、FF 但不适用于 Safari 5.1.7 的表格上的最小宽度