java文件工具类,文件的一些基本操作

直接复制过去可使用,支持以下功能: 1、 删除指定文件或文件夹 2、删除目录下的所有文件和文件夹 3、往文件末尾添加一行,使用默认字符集 4、往文件末尾添加一行,可以指定字符集 5、按行...

直接复制过去可使用,支持以下功能:

1、 删除指定文件或文件夹

2、删除目录下的所有文件和文件夹

3、往文件末尾添加一行,使用默认字符集

4、往文件末尾添加一行,可以指定字符集

5、按行读取文件,返回字符串数组。使用默认字符集

6、按行读取文件,返回字符串数组。可以指定字符集

7、列出目录中包含指定字符串的所有文件

好了,废话不多说,代码如下:


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

public class FileUtil
{
    /**
     * 删除指定文件或文件夹
     * @param 文件或文件夹
     */
    public static void deleteFile(File file)
    {
        if (file != null && file.exists()) {
            if (file.isDirectory()) {
                File files[] = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    deleteFile(files[i]);
                }
            }
            file.delete();
        }
    }
    
    /**
     * 删除目录下的所有文件和文件夹
     * @param 目录
     */
    public static void deleteSubFiles(File file)
    {
        if (file != null && file.exists()) {
            if (file.isDirectory()) {
                File files[] = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    deleteFile(files[i]);
                }
            }
        }
    }
    
    /**
     * 往文件末尾添加一行,使用默认字符集
     * @param 文件
     * @param 添加的内容
     */
    public static void appendTextLine(File file, String content)
    {
        appendText(file, content + "\n");
    }
    
    /**
     * 往文件末尾添加一行,可以指定字符集
     * @param 文件
     * @param 字符集
     * @param 添加的内容
     */
    public static void appendTextLine(File file, String charset, String content)
    {
        appendText(file, charset, content + "\n");
    }
    
    public static void appendText(File file, String content) {
        appendText(file, null, content);
    }
    
    public static void appendText(File file, String charset, String content)
    {
        try {
            if (charset == null) {
                FileWriter fw = new FileWriter(file, true);
                fw.append(content);
                fw.close();
            } else {
                BufferedWriter bw = new BufferedWriter(
                        new OutputStreamWriter(new FileOutputStream(file, true), charset));
                bw.append(content);
                bw.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 按行读取文件,返回字符串数组。使用默认字符集
     * @param 文件
     * @return 返回字符串数组,每行一个字符串
     */
    public static String[] readFileAsStringArrayIgnoreBlankLine(File file)
    {
        return readFileAsStringArrayIgnoreBlankLine(file, null);
    }
    
    /**
     * 按行读取文件,返回字符串数组。可以指定字符集
     * @param 文件
     * @param 字符集
     * @return 返回字符串数组,每行一个字符串
     */
    public static String[] readFileAsStringArrayIgnoreBlankLine(File file, String charset)
    {
        List<String> list = new ArrayList<String>();
        try {
            BufferedReader br = null;
            if (charset == null) {
                br = new BufferedReader(new FileReader(file));
            } else {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset));
            }
            
            String line = null;
            while ((line = br.readLine()) != null) {
                if (line.trim().length() > 0) {
                    list.add(line);
                }
            }
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list.toArray(new String[list.size()]);
    }
    
    public static File getDesFile(File srcFile)
    {
        File desFile = null;
        if (srcFile.exists() && srcFile != null) {
            if (srcFile.getName().indexOf(".") != -1) {
                String srcFilePath = srcFile.getAbsolutePath();
                String desFilePath = srcFilePath.substring(0, srcFilePath.lastIndexOf("."))
                            + "_after" + srcFilePath.substring(srcFilePath.lastIndexOf("."));
                desFile = new File(desFilePath);
            } else {
                desFile = new File(srcFile.getAbsoluteFile() + ".after");
            }
        } else {
            System.out.println("Please check the source file...");
        }
        return desFile;
    }
    
    /**
     * 列出目录中包含指定字符串的所有文件
     * @param 目录
     * @param 包含的字符串
     * @return 返回文件数组
     */
    public static File[] getFilesContains(File file, final String subString) {
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if (name.contains(subString)) {
                    return true;
                }
                return false;
            }
        });
        return files;
    }
}


  • 发表于 2017-11-14 10:36
  • 阅读 ( 1333 )
  • 分类:Java

0 条评论

请先 登录 后评论
不写代码的码农
伪摄影

22 篇文章

作家榜 »

  1. 威猛的小站长 124 文章
  2. Jonny 65 文章
  3. 江南烟雨 36 文章
  4. - Nightmare 33 文章
  5. doublechina 31 文章
  6. HJ社区-肖峰 29 文章
  7. 伪摄影 22 文章
  8. Alan 14 文章