NPE读取PDF页数的程序

时间:2018-10-23 06:56:31

标签: java pdf nullpointerexception

我正在尝试编写Java程序来计算PDF文件的页数。但是,当我运行该程序时,出现错误,我不确定为什么。

这是错误:

Exception in thread "main" java.lang.NullPointerException at pdfpagecount.Pdfpagecount.main(Pdfpagecount.java:12)

以下是产生错误的代码:

package pdfpagecount;

import java.io.File;
import java.io.FileInputStream;
import com.lowagie.text.pdf.PdfReader;

public class Pdfpagecount {

public static void main(String[] args) {
    File gopi = new File("C:\\Users\\Gopinath Muruti\\Desktop\\test.pdf");
    File listOfFile[] = gopi.listFiles();
    for(int i = 0; i < listOfFile.length; i++) {
        File tempFile = listOfFile[i];
        String fileName = tempFile.getName();
        System.out.println("File Name = " + fileName);
        try {
            if(fileName.toLowerCase().indexOf(".pdf") != -1) {
                PdfReader document = new PdfReader(new FileInputStream(new File("filename")));
                int noPages = document.getNumberOfPages();
                System.out.println("Number of Pages in the PDF document is = " + noPages);
            }
        }
        catch(Exception e) {
            System.out.println("Exception : " + e.getMessage());
            e.printStackTrace();
        }
    }
}
}

2 个答案:

答案 0 :(得分:2)

gopi.listFiles();返回null,因为gopi是文件,而不是目录或文件夹。这样您得到了NullPointerException。 检查您的File对象是文件还是目录:

File file = new File(path);

boolean isDirectory = file.isDirectory(); // Check if it's a directory
boolean isFile =      file.isFile();      // Check if it's a regular file

答案 1 :(得分:1)

NPE表示您尝试取消引用的某些对象为空-很有可能是

listOfFile [] = gopi.listFiles();

(这不是最好的方法,因为您已经有了文件名)

我建议开始阅读有关如何在Java中读取文件的教程。