FileUtils简化你的文件操作

Posted a00ium

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FileUtils简化你的文件操作相关的知识,希望对你有一定的参考价值。

前言:

    在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操作。

 

技术分享图片
/**
 * 从文件系统读取一个资源,使用当前ClassLoader读取相对路径
 * @return 资源的字符串
 * @throws Exception 资源不存在
 */
@Override
public String load() throws Exception {
    String result = null;
    try {
        String path = this.url;
        if (this.fileName != null) {
            path = path + "/" + this.fileName;
        }
        URL pathUrl = FileLoader.class.getClassLoader().getResource(path);
        result = FileUtils.readFileToString(new File(pathUrl.getPath()), "utf-8");
    } catch (Exception e) {
        throw e;
    }
    return result;
}
View Code

 

准备工作:

    1.下载jar     地址:http://commons.apache.org/proper/commons-io/download_io.cgi

    2.把commons-io-2.4.jar 这个文件导入到你的项目中

 

说明:

    1.由于是一个工具类使用都非常的简单 所以本文只是将其分类,展示它能够提供给我们什么。

    2.习惯看api的可以直接看官方的api   传送门

    3.可以看一看官方的指引  指引传送门

    4.FileUtils只是commons-io的其中一个工具类

 

分类说明演示:

    1.写 文件/文件夹

Java代码  技术分享图片
/* 写文件 
 * 1.这里只列出3种方式全参数形式,api提供部分参数的方法重载 
 * 2.最后一个布尔参数都是是否是追加模式 
 * 3.如果目标文件不存在,FileUtils会自动创建 
 * */  
//static void:write(File file, CharSequence data, String encoding, boolean append)   
FileUtils.write(new File("D:/a/b/cxyapi.txt"), "程序换api","UTF-8",true);  
  
//static void:writeLines(File file, Collection<?> lines, boolean append)   
List<String> lines=new ArrayList<String>();  
lines.add("欢迎访问:");lines.add("www.cxyapi.com");  
FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true);  
  
//static void:writeStringToFile(File file, String data, String encoding, boolean append)   
FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), "作者:cxy", "UTF-8",true);  

 

 

    2.读 文件/文件夹

Java代码  技术分享图片
技术分享图片
//读文件  
//static String:readFileToString(File file, String encoding)   
System.out.println(FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8"));  
  
//static List<String>:readLines(File file, String encoding)   
System.out.println(FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //返回一个list 
View Code

 

 

    3.删除 文件/文件夹

Java代码  技术分享图片
技术分享图片
//删除目录  
//static void:deleteDirectory(File directory)   
FileUtils.deleteDirectory(new File("D:/not/cxyapi"));  
  
//static boolean:deleteQuietly(File file)   
FileUtils.deleteQuietly(new File("D:/not/cxyapi")); //文件夹不是空任然可以被删除,永远不会抛出异常  
View Code

 

 

    4.移动 文件/文件夹

Java代码  技术分享图片
技术分享图片
//移动文件 或 文件夹  
//static void:moveDirectory(File srcDir, File destDir)   
FileUtils.moveDirectory(new File("D:/cxyapi1"), new File("D:/cxyapi2")); //注意这里 第二个参数文件不存在会引发异常  
//static void:moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)   
FileUtils.moveDirectoryToDirectory(new File("D:/cxyapi2"), new File("D:/cxyapi3"), true);  
/* 上面两个方法的不同是: 
 * moveDirectory:D:/cxyapi2里的内容是D:/cxyapi1的内容。 
 * moveDirectoryToDirectory:D:/cxyapi2文件夹移动到到D:/cxyapi3里 
 *  
 * 下面的3个都比较简单没提供示例,只提供了api 
 * 其中moveToDirectory和其他的区别是 它能自动识别操作文件还是文件夹 
 */  
//static void:moveFileToDirectory(srcFile, destDir, createDestDir)  
//static void:moveFile(File srcFile, File destFile)   
//static void:moveToDirectory(File src, File destDir, boolean createDestDir)  
View Code

 

 

    5.copy

Java代码  技术分享图片
技术分享图片
//结果是cxyapi和cxyapi1在同一目录  
FileUtils.copyDirectory(new File("D:/cxyapi"), new File("D:/cxyapi1"));   
//结果是将cxyapi拷贝到cxyapi2下  
FileUtils.copyDirectoryToDirectory(new File("D:/cxyapi"), new File("D:/cxyapi2"));  
  
//拷贝文件  
FileUtils.copyFile(new File("d:/cxyapi.xml"), new File("d:/cxyapi.xml.bak"));  
//拷贝文件到目录中  
FileUtils.copyFileToDirectory(new File("d:/cxyapi.xml"), new File("d:/cxyapi"));  
//拷贝url到文件  
FileUtils.copyURLToFile(new URL("http://www.cxyapi.com/rss/cxyapi.xml"), new File("d:/cxyapi.xml"));  
View Code

 

 

    6.其他

Java代码  技术分享图片
  1. //判断是否包含文件或者文件夹  
  2. //判断是否包含文件或者文件夹  
    boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt"));  
    System.out.println(b);  
      
    //获得临时目录 和 用户目录  
    System.out.println(FileUtils.getTempDirectoryPath());  
    System.out.println(FileUtils.getUserDirectoryPath());  
      
    //打开流,如果不存在创建文件及其目录结构  
    //第二个参数表示 文件流是否是追加方式  
    FileOutputStream fos=FileUtils.openOutputStream(new File("D:/cxyapi/cxyapi.txt"),true);  
    fos.write(new String("欢迎访问:www.cxyapi.com
    ").getBytes());  
    fos.close();  
      
    //文件 或 文件夹大小  
    System.out.println(FileUtils.sizeOf(new File("D:/cxyapi")));  
    System.out.println(FileUtils.sizeOfDirectory(new File("D:/cxyapi"))); 

     

以上是关于FileUtils简化你的文件操作的主要内容,如果未能解决你的问题,请参考以下文章

JAVA FileUtils(文件读写以及操作工具类)

[19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 & IOUtilsl类 操作里边的内容 )

文件操作工具类FileUtils

FileUtils.java 本地 文件操作工具类

JAVA FileUtils(文件读写以及操作工具类)

10.10-全栈Java笔记:Apache IOUtils和FileUtils的使用