Java读写PDF文件问题??
大家好,有一个很简单的需求就是从读一个PDF发票的文件,输入流内容是一个byte数组,下面代码中用pdfByteArray表示了,结果需要生成同样一个PDF发票文件到某一个目标路径下,之后这个PDF发票文件会被发到某个系统去验证。现在的问题是生成的PDF文件好像通过不了验证,人家怀疑java读写PDF的时候是不是改变了文件内容。但是我很确定没有啊,因为从代码来看读写PDF文件也没有encoding之类的东西或者像操作文本文件那样的讲究。不明白到底是什么原因,不知道大家有没有遇到过类似问题或者有什么建议的呢?谢谢了!以下是代码片断供参考:
InputStream is = new ByteArrayInputStream(pdfByteArray);
byte[] bytearray = new byte[1024];
try {
os = new FileOutputStream(PDFDir + PDFFileName);
do{
is.read(bytearray, 0, 1024);
os.write(bytearray);
}while (isIMG.available() > 0);
is.close();
os.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
------解决方案--------------------int len = is.read(bytearray);
os.write(bytearray,0,len);
------解决方案--------------------public int read (byte[] buffer)
Equivalent to read(buffer, 0, buffer.length).
public int read (byte[] buffer, int byteOffset, int byteCount)
Reads up to byteCount bytes from this stream and stores them in the byte array buffer starting at byteOffset. Returns the number of bytes actually read or -1 if the end of the stream has been reached.
你应该是读多少,写多少。
你的代码里,把数据读到一个长度为1024的byte数组里。但这个数组不一定能够被填满。而你写的总是1024长度。所以你拷贝完的文件总会比原始文件稍微大一点点。