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

时间:2012-05-07 05:57:42

标签: java file java-ee

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

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

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

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

1 个答案:

答案 0 :(得分:7)

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

要检查PDF文件是否有效加载和阅读,请使用com.itextpdf.text.pdf.PdfReader 如果文件已损坏,则抛出类似com.itextpdf.text.exceptions.InvalidPdfException的异常。

示例代码段

...  
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.  

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

您可以在iText API上找到详细的示例here