效果实例
代码实例
package com.file;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.*;
import org.apache.pdfbox.pdmodel.PDDocument;
/**
* @param 统计某个文件夹下Pdf总页数
*/
public class CountPdf extends JFrame implements ActionListener{
//定义组件
JPanel jp1,jp2,jp3,jp4;//面板
JLabel jlb1,jlb2,jlb3;//标签
JButton jb1,jb2;//按钮
JTextField jtfpath,jtfcount;//文本框
//存放所有文件的List路径集合
ArrayList<File> fileList;
public static void main(String[] args) {
CountPdf countPdf=new CountPdf();
}
public CountPdf(){
//创建面板
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
//创建标签
jlb1=new JLabel("文件夹绝对路径:");
jlb2=new JLabel("PDF总页数:");
jlb3=new JLabel("绝对路径例如 F:\\ARCHROOT\\GDPdf");
//创建按钮
jb1=new JButton("统计");
jb2=new JButton("重置");
//设置监听
jb1.addActionListener(this);
jb2.addActionListener(this);
//创建路径文本框
jtfpath=new JTextField(20);
//创建页数文本框
jtfcount=new JTextField(8);
//设置布局管理
this.setLayout(new GridLayout(4, 3));//网格式布局
//加入各个组件
jp1.add(jlb1);
jp1.add(jtfpath);
jp2.add(jlb2);
jp2.add(jtfcount);
jp3.add(jb1);
jp3.add(jb2);
jp4.add(jlb3);
//加入到JFrame
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.add(jp4);
//设置窗体
this.setTitle("文件夹下PDF页数统计");//窗体标签
this.setSize(400, 250);//窗体大小
this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
this.setVisible(true);//显示窗体
//锁定窗体
this.setResizable(false);
}
/**
* 监听方法
*/
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="统计"){
count();
}else if(e.getActionCommand()=="重置"){
clear();
}
}
/**
* 清空文本框
*/
private void clear() {
jtfpath.setText("");
jtfcount.setText("");
}
/**
* 信息验证
*/
private void count() {
if(jtfpath.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"请输入需要统计的路径!","提示消息",JOptionPane.WARNING_MESSAGE);
}else{
//统计页数
File file = new File(jtfpath.getText());
if(file.exists()){
fileList = new ArrayList<File>();
countYs(jtfpath.getText());
int ys = returnYs();
jtfcount.setText(ys+"");
}else{
JOptionPane.showMessageDialog(null,"路径输入有误或不存在此路径!","提示消息",JOptionPane.WARNING_MESSAGE);
}
}
}
/**
* 统计页数
* @param fileDir
*/
private void countYs(String fileDir) {
File file = new File(fileDir);
//获取目录下的所有文件或文件夹
File[] files = file.listFiles();
if (files == null || files.length == 0) {// 如果目录为空,直接退出
return;
}
// 遍历,目录下的所有文件
for (File f : files) {
//文件
if (f.isFile()) {
fileList.add(f);
//目录
} else if (f.isDirectory()) {
countYs(f.getAbsolutePath());
}
}
}
private int returnYs(){
int ys = 0;
//循环遍历所有文件,进行页数统计
for (File f1 : fileList) {
if(f1.getName().endsWith("pdf")||f1.getName().endsWith("PDF")){
PDDocument doc;
try {
doc = PDDocument.load(f1);
ys += doc.getPageCount();
doc.close();
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
}
return ys;
}
}
所需jar包