【发布时间】:2019-02-06 08:49:33
【问题描述】:
我的 BufferedReader 损坏了我的 Pdf 文件并将所有内容都写入第一行。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
createPdf();
response.setHeader("Content-disposition","attachment; filename=\""+"myPdf.pdf"+"\"");
BufferedReader reader = null;
try {
File file = new File("myPath\\myNewPdf.pdf");
reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
response.getWriter().append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我只是想阅读 Pdf 并将其写入新的以供下载。
【问题讨论】:
-
BufferedReader并不意味着读取非文本文件,使用较低级别的类(例如FileInputStream),请参阅:stackoverflow.com/questions/1442893/… -
BufferedReader是Reader,Reader用于字符数据。 PDF 文件不是字符数据,也不包含行。您应该使用InputStream。这些都有记录。 -
嗯,正如 JavaDoc 中定义的那样,
Reader抽象类是一个用于读取字符流的抽象类 - 但 PDF 文件是二进制文件,而不是字符流.使用InputStream读取文件,使用response.getOutputStream()写入文件。