Java读取Zip文件和PDF文件



 工作中碰到的问题,今天正好没事琢磨下,1.主要读取ZIP文件中的内容,无需解压,里面不管有多少层文件夹都可以轻松搞定;2.读取PDF文件。下面来看下具体代码:3wL思考者日记网-束洋洋个人博客

1.Java读取Zip文件中的内容,无需解压3wL思考者日记网-束洋洋个人博客

/** 
 * 读取zip文件中的内容 
 *  
 * @param file 
 * @throws Exception 
 */  
public static void readZipFile(String file) throws Exception {  
    zf = new ZipFile(file);  
    InputStream in = new BufferedInputStream(new FileInputStream(file));  
    zin = new ZipInputStream(in);  
    ZipEntry ze;  
    while ((ze = zin.getNextEntry()) != null) {  
        if (ze.isDirectory()) {  
  
        } else {  
            System.err.println("file - " + ze.getName() + " : "  
                    + ze.getSize() + " bytes");  
            long size = ze.getSize();  
            if (size > 0) {  
                BufferedReader br = new BufferedReader(  
                        new InputStreamReader(zf.getInputStream(ze),"GBK"));  
                String line;  
                while ((line = br.readLine()) != null) {  
                    System.out.println(line);  
                }  
                br.close();  
            }  
            System.out.println();  
        }  
    }  
    zin.closeEntry();  
}  

 3wL思考者日记网-束洋洋个人博客

效果:3wL思考者日记网-束洋洋个人博客

zip效果.jpg3wL思考者日记网-束洋洋个人博客

2.Java解析读取PDF文件3wL思考者日记网-束洋洋个人博客

准备jar包,我这里用的maven管理:3wL思考者日记网-束洋洋个人博客

<!-- pdf -->  
    <dependency>  
      <groupId>org.apache.pdfbox</groupId>  
      <artifactId>pdfbox</artifactId>  
      <version>1.8.10</version>  
    </dependency>  
    <!-- fontbox -->  
    <dependency>  
      <groupId>org.apache.pdfbox</groupId>  
      <artifactId>fontbox</artifactId>  
      <version>1.8.10</version>  
    </dependency>
 

注意:FontBox是需要加入的,不然会报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/fontbox/afm/FontMetric3wL思考者日记网-束洋洋个人博客

 3wL思考者日记网-束洋洋个人博客

Caused by: java.lang.ClassNotFoundException: org.fontbox.afm.FontMetric3wL思考者日记网-束洋洋个人博客

 3wL思考者日记网-束洋洋个人博客

/** 
 * 解析PDF文件 
 * @param pdfFilePath 
 * @return 
 */  
public static String getTextFromPDF(String pdfFilePath)   
{  
    String result = null;  
    FileInputStream is = null;  
    PDDocument document = null;  
    try {  
        is = new FileInputStream(pdfFilePath);  
        PDFParser parser = new PDFParser(is);  
        parser.parse();  
        document = parser.getPDDocument();  
        PDFTextStripper stripper = new PDFTextStripper();  
        result = stripper.getText(document);  
    } catch (FileNotFoundException e) {  
        e.printStackTrace();  
    } catch (IOException e) {  
        e.printStackTrace();  
    } finally {  
        if (is != null) {  
            try {  
                is.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
        if (document != null) {  
            try {  
                document.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    return result;  
}  

效果:3wL思考者日记网-束洋洋个人博客

PDF效果.jpg3wL思考者日记网-束洋洋个人博客

到此结束。附上全部代码:3wL思考者日记网-束洋洋个人博客

package cn.com.shuyangyang.util;  
  
import java.io.BufferedInputStream;  
import java.io.BufferedReader;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.UnsupportedEncodingException;  
import java.util.zip.ZipEntry;  
import java.util.zip.ZipFile;  
import java.util.zip.ZipInputStream;  
  
import org.apache.pdfbox.pdfparser.PDFParser;  
import org.apache.pdfbox.pdmodel.PDDocument;  
import org.apache.pdfbox.util.PDFTextStripper;  
  
/** 
 * 文件操作工具类 
 *  
 * @author ShuYangYang E-Mail:shuyangyang@aliyun.com 
 *         http://www.shuyangyang.com.cn Date:2015年8月29日上午10:08:50 
 *  
 */  
public class FileUtil {  
  
    private static ZipFile          zf;  
    private static ZipInputStream   zin;  
  
    public static void main(String[] args) {  
        try {  
            readZipFile("E:招财宝日结文件52022015070700billbill_1.zip");//zip文件读取  
            System.out.println(getTextFromPDF("C:UsersAdministratorDesktopShiro教程.pdf"));//PDF文件读取  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
    /** 
     * 读取zip文件中的内容 
     *  
     * @param file 
     * @throws Exception 
     */  
    public static void readZipFile(String file) throws Exception {  
        zf = new ZipFile(file);  
        InputStream in = new BufferedInputStream(new FileInputStream(file));  
        zin = new ZipInputStream(in);  
        ZipEntry ze;  
        while ((ze = zin.getNextEntry()) != null) {  
            if (ze.isDirectory()) {  
  
            } else {  
                System.err.println("file - " + ze.getName() + " : "  
                        + ze.getSize() + " bytes");  
                long size = ze.getSize();  
                if (size > 0) {  
                    BufferedReader br = new BufferedReader(  
                            new InputStreamReader(zf.getInputStream(ze),"GBK"));  
                    String line;  
                    while ((line = br.readLine()) != null) {  
                        System.out.println(line);  
                    }  
                    br.close();  
                }  
                System.out.println();  
            }  
        }  
        zin.closeEntry();  
    }  
      
    /** 
     * 解析PDF文件 
     * @param pdfFilePath 
     * @return 
     */  
    public static String getTextFromPDF(String pdfFilePath)   
    {  
        String result = null;  
        FileInputStream is = null;  
        PDDocument document = null;  
        try {  
            is = new FileInputStream(pdfFilePath);  
            PDFParser parser = new PDFParser(is);  
            parser.parse();  
            document = parser.getPDDocument();  
            PDFTextStripper stripper = new PDFTextStripper();  
            result = stripper.getText(document);  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (is != null) {  
                try {  
                    is.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (document != null) {  
                try {  
                    document.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
        return result;  
    }  
  
    /** 
     * 字符串编码转换的实现方法 
     *  
     * @param str 
     *            待转换编码的字符串 
     * @param newCharset 
     *            目标编码 
     * @return 
     * @throws UnsupportedEncodingException 
     */  
    public static String changeCharset(String str, String newCharset)  
            throws UnsupportedEncodingException {  
        if (str != null) {  
            // 用默认字符编码解码字符串。  
            byte[] bs = str.getBytes();  
            // 用新的字符编码生成字符串  
            return new String(bs, newCharset);  
        }  
        return null;  
    }  
}  

 3wL思考者日记网-束洋洋个人博客

 3wL思考者日记网-束洋洋个人博客

 

(转载本站文章请注明作者和出处 思考者日记网|束洋洋个人博客 ,请勿用于任何商业用途)

『访问 思考者日记网404页面 寻找遗失儿童』

告知
  •     本站90%以上文章均属原创,部分转载已加上原作者出处。 如需转载本站文章请您务必保留本站出处!
  •     打广告评论者请自重,请为广大网友提供一个健康干净的网络空间。
  •  感谢主机屋提供网站空间;
  •  感谢万网阿里云提供域名解析;
  •  感谢EmpireCMS提供CMS系统;
  •  感谢bootstrap展示本站前端页面;
  •  感谢Glyphicons Halflings提供字体;
  •  感谢大家一直以来对本站的喜爱,感谢大家!
近期文章 建议与反馈

 

网友评论
我也来说两句
点击显示

 

点击显示弹幕