zoukankan      html  css  js  c++  java
  • 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"))); 
  • 相关阅读:
    中缀表达式求值
    520的信心赛——点点玩deeeep
    520的信心赛——麓麓学数学
    l洛谷 (水题)P4144 大河的序列
    洛谷 P3391 【模板】文艺平衡树(Splay)
    在洛谷3369 Treap模板题 中发现的Splay详解
    洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control
    洛谷 P1678 烦恼的高考志愿
    洛谷 P2421 A-B数对(增强版)
    P3381 【模板】最小费用最大流
  • 原文地址:https://www.cnblogs.com/a00ium/p/10329139.html
Copyright © 2011-2022 走看看