文件File工具类

package com.panchan.tsmese.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

/**
 * @Description 文件工具类
 * @version 1.0
 * @since JDK1.8
 * @author
 * @Created on 2018年11月2日
 */
public class FileUtil {
    
    /**
     * 压缩文件 (压缩文件生成路径不可以与被压缩文件在同一路径)
     * @param path 生成的压缩文件存放路徑含名稱
     * @param pathName 需要压缩的文件或文件夹
     */
    public static void zip(String path, String pathName) throws ZipException{
        File pathNameFile = new File(pathName);
        ZipFile zipFile = new ZipFile(path);
        File file=zipFile.getFile();
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        
        ZipParameters para=new ZipParameters();
        //设置压缩级别,压缩方法默认
        para.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        if(pathNameFile.isDirectory()){
            File[] files = pathNameFile.listFiles();
            for (int i = 0; i < files.length; i++) {
                zipFile.addFile(files[i], para);
                files[i].delete();
            }
        }else{
            zipFile.addFile(pathNameFile, para);
        }
        pathNameFile.delete();
    }
    
    /**
     *  文件转byte md5加密
     * @param filePath
     * @return
     * @throws Exception
     */
    @SuppressWarnings("deprecation")
    public static String getMd5(String filePath) throws Exception {
        File file1 = new File(filePath);
        FileInputStream fis = new FileInputStream(file1);
        String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
        IOUtils.closeQuietly(fis);
        return md5;
    }
    
    /**
     * 创建文件
     * @param path 生成文件路径包含文件名
     * @param object 需要写入文件的内容
     * @throws IOException
     */
    public static void createFile(String path, String object) throws IOException {
        
        File checkFile = new File(path);
        FileWriter writer = null;
        try {
            // 二、检查目标文件是否存在,不存在则创建
            if (!checkFile.exists()) {
                checkFile.createNewFile();// 创建目标文件
            }
            // 三、向目标文件中写入内容
            writer = new FileWriter(checkFile, true);
            writer.append(object);
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != writer)  writer.close();
        }
    }
    
    /**
     * 
     * @param path 文件路径
     * @param beginIndex 第几行开始
     * @param endIndex 末尾空余几行
     * @return
     */
    public static String readFile(String path, Integer beginIndex, Integer endIndex){
        File file = new File(path);
        InputStream inputStream = null;
        BufferedReader br = null;
        if(file.exists()){
            try {
                inputStream = new FileInputStream(file);
                br = new BufferedReader(new InputStreamReader(inputStream));
                StringBuffer buffer = new StringBuffer();
                String str = "";
                Integer begin = beginIndex != null ? beginIndex : 0;
                Integer end = getFileLineNumber(file) - (endIndex != null ? endIndex : 0);
                int i = 0;
                while (!StringUtils.isEmpty(str = br.readLine())) {
                    i++;
                    if(i > begin && i <= end){
                        buffer.append(str);
                    }
                }
                return buffer.toString();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }finally{
                try {
                    if(inputStream != null){
                        inputStream.close();
                    }
                    if(br != null){
                        br.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
    
    /**
     * 获取文件行数
     * @param file
     * @return
     * @throws IOException
     */
    public static int getFileLineNumber(File file) throws IOException {
            LineNumberReader lnr = new LineNumberReader(new FileReader(file));
            lnr.skip(Long.MAX_VALUE);
            int lineNo = lnr.getLineNumber() + 1;
            lnr.close();
            return lineNo;
    }
    
    /**
     * 读取Pem文件
     * @param path
     * @return
     */
    public static String readPemFile(String path) {
        BufferedReader br;
        String s = "";
        StringBuffer publickey = null;
        try {
            File file = new File(path);
            if(file.exists()){
                br = new BufferedReader(new FileReader(path));
                publickey =  new StringBuffer();
                s = br.readLine();
                while (s != null) {
                    if (s.charAt(0) != '-') {
                        publickey.append(s + "\r");
                    }
                    s = br.readLine();
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return publickey == null ? "" : publickey.toString();
    }
}

猜你喜欢

转载自www.cnblogs.com/huyanlon/p/10641355.html