Java的文件相关操作

文件内容替换

/**
 * 文件内容替换
 * @param file 需要替换的文件
 * @param params 键值对:文件中的占位符和其对应的值
 * @throws IOException 文件读取写入错误时
 */
private void doReplace(File file, Map<String, String> params) throws IOException {
    Asserts.notNull(file, "file");
    Asserts.notNull(params, "params");

    if(file.isFile()){
        StringBuffer buffer = new StringBuffer();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = null;
        while((line=bufferedReader.readLine())!=null){
            buffer.append(line);
        }
        bufferedReader.close();

        String fileContent = buffer.toString();
        for (Map.Entry<String, String> stringStringEntry : params.entrySet()) {
            fileContent = fileContent.replace(stringStringEntry.getKey(),stringStringEntry.getValue());
        }
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
        writer.write(fileContent);
        writer.close();
    }
}

文件删除

代码来自网络,经验证没有问题。所以记下来方便以后查询

/**
 *  根据路径删除指定的目录或文件,无论存在与否
 *@param file  要删除的目录或文件
 *@return 删除成功返回 true,否则返回 false。
 */
public boolean deleteFile(File file) {
    boolean flag = false;
    // 判断目录或文件是否存在
    if (!file.exists()) {  // 不存在返回 false
        return flag;
    } else {
        // 判断是否为文件
        if (file.isFile()) {  // 为文件时调用删除文件方法
            return deleteFileOnly(file);
        } else {  // 为目录时调用删除目录方法
            return deleteDirectory(file);
        }
    }
}
/**
 * 删除单个文件
 * @param   file    被删除文件
 * @return 单个文件删除成功返回true,否则返回false
 */
public boolean deleteFileOnly(File file) {

    boolean flag = false;
    // 路径为文件且不为空则进行删除
    if (file.isFile() && file.exists()) {
        file.delete();
        flag = true;
    }
    return flag;
}

/**
 * 删除目录(文件夹)以及目录下的文件
 * @param   dirFile 被删除目录的文件
 * @return  目录删除成功返回true,否则返回false
 */
public boolean deleteDirectory(File dirFile) {

    //如果dir对应的文件不存在,或者不是一个目录,则退出
    if (!dirFile.exists() || !dirFile.isDirectory()) {
        return false;
    }
    boolean flag = true;
    //删除文件夹下的所有文件(包括子目录)
    File[] files = dirFile.listFiles();
    for (int i = 0; i < files.length; i++) {
        //删除子文件
        if (files[i].isFile()) {
            flag = deleteFile(files[i]);
            if (!flag) break;
        } //删除子目录
        else {
            flag = deleteDirectory(files[i]);
            if (!flag) break;
        }
    }
    if (!flag) return false;
    //删除当前目录
    if (dirFile.delete()) {
        return true;
    } else {
        return false;
    }
}
posted @ 2017-02-14 15:20  吴昭  阅读(66)  评论(0编辑  收藏  举报