文件操作的工具类

相关代码如下:包含创建文件,创建目录,创建压缩文件,获取文件等相关操作。

public class FileUtil {

    private static final Log LOGGER = LogFactory.getLog(FileUtil.class);

    private static ArrayList<File> fileList = new ArrayList<File>();

    private static boolean  dirExist = false;

    public static boolean isDirExist() {
        return dirExist;
    }

    public static void setDirExist(boolean dirExist) {
        FileUtil.dirExist = dirExist;
    }
    /**
     * 读取指定目录下面的所有文件,
     * @param fileDir
     * @return
     */
    public static ArrayList<File> ReadFile(String fileDir) {
        if (!fileList.isEmpty()) {
            cleanFiles();
        }
        File[] files = new File(fileDir).listFiles();// 获取目录下的所有文件或文件夹
        if (files == null) {// 如果目录为空,直接退出
            return null;
        }
        // 遍历,目录下的所有文件
        for (File file : files) {
            if (file.isFile()) {
                fileList.add(file);
            } else if (file.isDirectory()) {
                ReadFile(file.getAbsolutePath());//采用递归的方式读取子文件里面的内容
            }
        }
        return fileList;
    }

    public static void cleanFiles() {
        fileList.clear();
    }
    /**
     * 把指定文件夹打包成zip格式的压缩包
     * @param sourceFilePath
     * @param zipFilePath
     * @param fileName
     * @return
     */
    public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {
        boolean flag = false;
        File sourceFile = new File(sourceFilePath);
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        FileOutputStream fos = null;
        ZipOutputStream zos = null;
        if (!sourceFile.exists()) {
            LOGGER.error("待压缩的文件目录:" + sourceFilePath + "不存在.");
        } else {
            try {
                File zipFile = new File(zipFilePath + "/" + fileName + ".zip");
                if (zipFile.exists()) {
                    LOGGER.info(zipFilePath + "目录下已经存在名字为:" + fileName + ".zip" + "打包文件.");
                } else {
                    File[] sourceFiles = sourceFile.listFiles();
                    if (sourceFiles == null || sourceFiles.length < 1) {
                        LOGGER.info("待压缩的文件目录:" + sourceFilePath + "里面不存在文件,无需压缩.");
                    } else {
                        fos = new FileOutputStream(zipFile);
                        zos = new ZipOutputStream(new BufferedOutputStream(fos));
                        byte[] bufs = new byte[1024 * 10];
                        for (int i = 0; i < sourceFiles.length; i++) {
                            // 创建ZIP实体,并添加进压缩包
                            ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
                            zos.putNextEntry(zipEntry);
                            // 读取待压缩的文件并写进压缩包里
                            fis = new FileInputStream(sourceFiles[i]);
                            bis = new BufferedInputStream(fis, 1024 * 10);
                            int read = 0;
                            while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
                                zos.write(bufs, 0, read);
                                zos.flush();
                            }
                        }
                        flag = true;
                    }
                }
            } catch (FileNotFoundException e) {
                LOGGER.error(e.getMessage(), e);
            } catch (IOException e) {
                LOGGER.error(e.getMessage(), e);
            } finally {
                try {
                    if (null != bis)
                        bis.close();
                    if (null != zos)
                        zos.close();
                } catch (IOException e) {
                    LOGGER.error(e.getMessage(), e);
                }
            }
        }
        return flag;
    }

    /**
     * 创建指定目录
     * @param destDirName
     * @return
     */
    public static boolean createDir(String destDirName) {
        dirExist  = true;
        File dir = new File(destDirName);
        if (dir.exists()) {
            return false;
        }
        // 创建目录
        if (dir.mkdirs()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 创建指定文件
     * @param destFilePath
     * @return
     */
    public static File createFile(String destFilePath) {
        File file = new File(destFilePath);
        if (file.exists()) {
            System.out.println("创建文件" + destFilePath + "失败,目标文件已存在!");
            return file;
        }
        if (!file.getParentFile().exists()) {
            // 如果目标文件所在的目录不存在,则创建父目录
            if (!file.getParentFile().mkdirs()) {
                LOGGER.error("创建目标文件所在目录失败!");
            }
        }
        try {
            if (file.createNewFile()) {
                return file;
            }
        } catch (IOException e) {
            LOGGER.error("创建目标文件失败!" + e);
        }
        return file;
    }

    /**
     * 把指定内容写入文件
     * @param type 字段名
     * @param audioId
     * @param info
     * @param csspFilePath 路径
     */
    public static void writeToFile(String testWorkId, String type, int audioId, String info, String csspFilePath) {
        String fileName = csspFilePath.substring(csspFilePath.lastIndexOf(‘/‘) + 1, csspFilePath.lastIndexOf(‘.‘));
        String destDir = "resultInfo/" + testWorkId + "/";
        if (FileUtil.createDir(destDir)) {//如果没目录则创建一个
            write(type, info, fileName, destDir);
        } else {
            write(type, info, fileName, destDir);
        }
    }

    private static void write(String type, String info, String fileName, String destDir) {
        File files = new File(destDir + fileName + ".txt");
        FileWriter fw = null;
        try {
            fw = new FileWriter(files, true);
            fw.write(type + ":" + info.toString() + "\r\n\r\n");
            fw.flush();
        } catch (IOException e) {
            LOGGER.error(e);
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    LOGGER.error("写入文件失败");
                }
            }
        }
    }

}
时间: 2024-08-10 15:12:11

文件操作的工具类的相关文章

C# 文件操作的工具类

根据查阅的资料对代码进行修改并完善备注后的结果.希望能对新手有所帮助. 1 using System; 6 using System.IO; 8 namespace 文件操作类 9 { 10 public class FileHelper 11 { 12 /// <summary> 13 /// 判断文件是否存在 14 /// </summary> 15 /// <param name="filePath">文件全路径</param> 1

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

Java 借助poi操作Wold工具类

? Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作 这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用. 这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法.分享给大家学习下: Apache POI的组件: ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法.该API的组件列表如下 - POIFS(不良混淆实现文件系统) - 此组件是

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.

list集合、txt文件对比的工具类和文件读写工具类

工作上经常会遇到处理大数据的问题,下面两个工具类,是在处理大数据时编写的:推荐的是使用map的方式处理两个list数据,如果遇到list相当大数据这个方法就起到了作用,当时处理了两个十万级的list,使用改方法的变种搞定. 1.txt文件.list集合比较工具 <span style="font-family:KaiTi_GB2312;font-size:18px;">package com.hudong.util.other; import java.util.Colle

spring mvc 文件上传工具类

虽然文件上传在框架中,已经不是什么困难的事情了,但自己还是开发了一个文件上传工具类,是基于springmvc文件上传的. 工具类只需要传入需要的两个参数,就可以上传到任何想要上传的路径: 参数1:HttpServletRequest request 参数2:String storePath   //文件存储相对路径 ,例如:"/upload","/image","/local/file" 返回值:上传到服务器的相对路径 一:代码实现 import

文件上传工具类 UploadUtil.java

package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util

文件上传工具类——傻瓜式上传文件

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6128382.html 在前面  (http://www.cnblogs.com/ygj0930/p/6073505.html)  我们提到过Javaweb开发的文件上传功能的实现,需要借助第三方jar包,并且要创建factory呀.设置临时文件区路径呀等等,十分繁琐.而作为一个开发人员,不可能每次实现文件上传时都从头到尾做那么多工序.这时候,我们可以把这些繁琐的工作封装起来,把一个个功能做成以供调用的方法.

//读取配置文件(属性文件)的工具类-ConfigManager

package com.pb.news.util; import java.io.IOException;import java.io.InputStream;import java.sql.ResultSet;import java.util.Properties; //读取配置文件(属性文件)的工具类public class ConfigManager { private static ConfigManager configManager; //properties.load(InputS