如果要读取/写入二进制数据,则应使用字节流(InputStream / OutputStream)代替字符流,并尝试避免像示例中那样在字节和字符之间进行转换。
您可以使用以下类将字节从InputStream复制到OutputStream:
public class IoUtil {
private static final int bufferSize = 8192;
public static void copy(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[bufferSize];
int read;
while ((read = in.read(buffer, 0, bufferSize)) != -1) {
out.write(buffer, 0, read);
}
}
}
您没有提供太多与客户端连接的详细信息。这是一个最小的示例,显示了如何将一些字节流传输到Servlet的客户端。(您需要在响应中设置一些标头并适当地释放资源)。
public class FileServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Some code before
FileInputStream in = new FileInputStream(resourceLocation);
ServletOutputStream out = response.getOutputStream();
IoUtil.copy(in, out);
// Some code after
}
}