org.apache.commons.io.FileUtils详解

  • Apache为大家提供了很多有用的API,如StringUtils、FileUtis就是其中常用的之一
  • FileUtils主要用于操作文件
  • 下面API所在包为:org.apache.commons.io

write(File file, CharSequence data)

  • 将指定的数据(data)写入到指定的文件(file)中
  • file必须是文件,是目录时抛异常
  • file整个路径可以不存在,即使父目录不再,不再时也会自动全部新建
  • 这种方式写入时,如果文件已经存在了,则先删除之前的内容,然后在重新写入,即完全覆盖,而不是内容追加
public static void main(String[] args) {

    /** E盘下xfmovie1不存在时,自动新建*/
    String FilePath = "E:\\xfmovie1\\a.txt";

    /** 通常数据采用这种压缩形式也是很好的* */
    String context = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\"page\":88,\"isNonProfit\":true}";
    try {
        FileUtils.write(new File(FilePath), context);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {

    /** E盘下xfmovie1不存在时,自动新建*/
    String FilePath = "E:\\xfmovie1\\a.txt";

    /** 如果需要换行,请使用"\r\n"组合进行内容换行
     * 下面就是先换行,然后tab键空格,这样json数据看起来就会更直观了
     * */
    String context = "{\r\n\t\"name\":\"BeJson\",\r\n\t\"url\":\"http://www.bejson.com\"," +
            "\r\n\t\"page\":88,\"isNonProfit\":true\r\n}";
    try {
        FileUtils.write(new File(FilePath), context);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

write(File file, CharSequence data, boolean append)

  • 将指定的数据(data)写入到指定的文件(file)中
  • file必须是文件,是目录时抛异常
  • file整个路径可以不存在,即使父目录不再,不再时也会自动全部新建
  • append则表示是否内容追加,true时为内容追加,false时与上面的write(File file, CharSequence data)一样,因为它默认就是false
public static void main(String[] args) {

    /** E盘下xfmovie1不存在时,自动新建*/
    String FilePath = "E:\\xfmovie1\\a.txt";

    /** 通常数据采用这种压缩形式也是很好的
     * 内容结尾采用了换行*/
    String context = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\"page\":88,\"isNonProfit\":true}\r\n";
    try {
        /**内容追加,而不再是覆盖*/
        FileUtils.write(new File(FilePath), context,true);
    } catch (IOException e) {
        e.printStackTrace();
    }
}


write(File file, CharSequence data, Charset encoding)

  • 将指定的数据(data)写入到指定的文件(file)中
  • file必须是文件,是目录时抛异常
  • file整个路径可以不存在,即使父目录不再,不再时也会自动全部新建
  • 这种方式写入时,如果文件已经存在了,则先删除之前的内容,然后在重新写入,即完全覆盖,而不是内容追加
  • encoding可以指定文件内容编码,这在网络通信时防止中文乱码非常有用

/**
 * 在指定目录下生成文件,并写入内容
 *
 * @param dir:指定的目录
 * @param fileName:待生成的文件,包含名称与格式,如:23.docx;缺省时,采用
 * @param context:文件待写入的内容
 * @return 写入成功时,返回true,否则返回false
 */
public static final boolean createFile(String dir, String fileName, String context) {
    boolean result = false;
    try {
        if (StringUtils.isBlank(fileName)){
            String dateStr = DateFormatUtils.format(new Date(), "yyyy_MM_dd_HH_mm_ss");
            fileName = "act_"+dateStr+".json";
        }
        if (StringUtils.isNotBlank(dir) && StringUtils.isNotBlank(context)) {
            File file = new File(new File(dir), fileName);
            /**为了为防止context在远程客户端使用HttpClient传输时乱码,对方采用UTF-8发送,这里写入时也采用UTF-8*/
            FileUtils.write(file, context, Charset.forName("UTF-8"));
            result = true;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}



猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/80136921