如何用java知道文件是否已损坏(可读)?

我有网络应用程序,人们可以通过FTP上传任何PDF文件。 在pdf文件上传后,我对该pdf执行某些操作。

但问题是,虽然通过FTP上传PDF有时会在两者之间断开连接并且上传的pdf不完整(表现得像损坏的一样)。 当我尝试在arobat阅读器中打开该文档时,它会显示“ 打开文档时出错”。 文件已损坏,无法修复 ‘。

现在在开始处理PDF之前,我想检查上传的pdf是否可读意味着没有损坏。

java是否为此提供任何API,或者有任何方法来检查文件是否已损坏。

我们有Java的iText API来处理PDF文件。

要检查PDF文件是否有效加载和读取,请使用com.itextpdf.text.pdf.PdfReader
如果文件已损坏,则抛出com.itextpdf.text.exceptions.InvalidPdfException等exception。

示例代码段

 ... import com.itextpdf.text.pdf.PdfReader; ... try { PdfReader pdfReader = new PdfReader( pathToUploadedPdfFile ); String textFromPdfFilePageOne = PdfTextExtractor.getTextFromPage( pdfReader, 1 ); System.out.println( textFromPdfFilePageOne ); } catch ( Exception e ) { // handle exception } 

如果上传但已损坏的文件,您可能会遇到以下错误:

 com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.; Original message: PDF startxref not found. 

注意 :要产生此类exception,请尝试从net保存pdf文件,但在中间中止。
使用它来加载上面的代码片段并检查它是否安全加载。

您可以在此处找到有关iText API的详细示例。