zoukankan      html  css  js  c++  java
  • FileUtils常用方法

    FileUtils常用常量

    public static final long ONE_KB = 1024;
     
    public static final BigInteger ONE_KB_BI = BigInteger.valueOf(ONE_KB);
     
    public static final long ONE_MB = ONE_KB * ONE_KB;
     
    public static final BigInteger ONE_MB_BI = ONE_KB_BI.multiply(ONE_KB_BI);
     
    private static final long FILE_COPY_BUFFER_SIZE = ONE_MB * 30;
     
    public static final long ONE_GB = ONE_KB * ONE_MB;
     
    public static final BigInteger ONE_GB_BI = ONE_KB_BI.multiply(ONE_MB_BI);
     
    public static final long ONE_TB = ONE_KB * ONE_GB;
     
    public static final BigInteger ONE_TB_BI = ONE_KB_BI.multiply(ONE_GB_BI);
     
    public static final long ONE_PB = ONE_KB * ONE_TB;
     
    public static final BigInteger ONE_PB_BI = ONE_KB_BI.multiply(ONE_TB_BI);
     
    public static final long ONE_EB = ONE_KB * ONE_PB;
     
    public static final BigInteger ONE_EB_BI = ONE_KB_BI.multiply(ONE_PB_BI);
     
    public static final BigInteger ONE_ZB = BigInteger.valueOf(ONE_KB).multiply(BigInteger.valueOf(ONE_EB));
     
    public static final BigInteger ONE_YB = ONE_KB_BI.multiply(ONE_ZB);
     
    public static final File[] EMPTY_FILE_ARRAY = new File[0];

    FileUtils常用方法

    FileUtils.getFile => 获取指定文件

    File file = FileUtils.getFile("D://test/test1/123.txt");

    FileUtils.getFile => 获取指定目录下的:"lalala.txt", "lalala2.txt"

    File file1 = FileUtils.getFile(new File("D://test/test1"), "123.txt", "456.txt");

    FileUtils.getTempDirectoryPath => 获取临时目录 File对象

    File tempDirectory = FileUtils.getTempDirectory();

    FileUtils.getTempDirectoryPath => 获取临时目录路径字符串

    System.out.println(FileUtils.getTempDirectoryPath());
    // C:UsershanAppDataLocalTemp

    FileUtils.getUserDirectory  => 获取用户主目录 File对象

    File userDirectory = FileUtils.getUserDirectory();

    FileUtils.getUserDirectoryPath  => 获取用户主目录路径字符串

    System.out.println(FileUtils.getUserDirectoryPath());
    // C:UsersAdministrator

    FileUtils.byteCountToDisplaySize  => 以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes

    System.out.println(FileUtils.byteCountToDisplaySize(10000000)); // 9 MB
    System.out.println(FileUtils.byteCountToDisplaySize(1)); // 1 bytes

    FileUtils.sizeOf => 读取文件大小

    FileUtils.sizeOf(new File("D://test/test1"));//返回Long
    FileUtils.sizeOfAsBigInteger(new File("D://test/test1"));//返回BigInteger

    FileUtils.sizeOfDirectory => 目录,级联计算文件下的所有文件大小

    FileUtils.sizeOfDirectory(new File("D://test/test1"));//返回Long
    FileUtils.sizeOfDirectoryAsBigInteger(new File("D://test/test1"));//返回BigInteger

    FileUtils.copyDirectory => 复制文件夹(文件夹里面的文件内容也会复制)

    String filePath1 = "D://test/test1" ;
    File srcDir = new File( filePath1 ) ;
     
    String filePath2 = "D://test/test2" ;
    File destDir = new File( filePath2 ) ;
     
    try {
        //复制文件夹
        FileUtils.copyDirectory(srcDir, destDir);
    } catch (IOException e) {
        e.printStackTrace();
    }

    FileUtils.copyDirectoryToDirectory => 此方法将目录1所有的文件夹及文件复制到目录2下,如果有同名文件夹则合并,如果有同名文件则替换

    try {
        //复制文件夹
        FileUtils.copyDirectoryToDirectory(srcDir, destDir);
    } catch (IOException e) {
        e.printStackTrace();
    }

    FileUtils.copyDirectory => 复制文件夹,带有文件过滤功能

    try {
        ///仅仅拷贝目录
        FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);
    } catch (IOException e) {
        e.printStackTrace();
    }
     
    IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");// 创建.txt过滤器
    IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);
    // 创建包含目录或者txt文件的过滤器
    FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);
    // Copy using the filter
    FileUtils.copyDirectory(srcDir, destDir, filter);//TODO 阅读doCopyDirectory源码

    FileUtils.openInputStream => 获取文件输入流

    InputStream in = FileUtils.openInputStream(new File("D://test/test1"));

    FileUtils.openOutputStream =>  获取文件输出流

    OutputStream out = FileUtils.openOutputStream(new File("D://test/test2"));
    out = FileUtils.openOutputStream(new File("D://test/test3"), true);//是否追加的形式添加内容

    FileUtils.touch => 创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件

    FileUtils.touch(new File("D://test/test4"));

    FileUtils.contentEquals => 文件内容的对比

    FileUtils.contentEquals(new File("D://test/test1"), new File("D://test/test2"));
    FileUtils.contentEqualsIgnoreEOL(new File("D://test/test1"), new File("D://test/test2"), null);//忽略换行符,第三个参数是字符集

    FileUtils.toFile => 根据URL获取文件

    //FileUtils.toFile(URL url)使用相对路径创建一个File对象
    String data = FileUtils.readFileToString(FileUtils.toFile(
            AjavaURLToFile.class.getResource("/ajava.txt")));
    System.out.println("data = " + data);
     
     
    //FileUtils.toFile(URL url)使用绝对路径创建一个File对象
    File file = FileUtils.toFile(new URL("file://D:/ajavademo.txt"));
    data = FileUtils.readFileToString(file);
    System.out.println("data = " + data);

    FileUtils.toFiles => 根据多个URL获取多个文件文件,返回File[]数组

    // File[] toFiles(final URL[] urls) 
    FileUtils.toFiles(null);

    FileUtils.toURLs => 文件地址转为URL

    FileUtils.toURLs(new File[]{new File("D://test/test1")});

    FileUtils.copyFileToDirectory => 此方法将b文件夹下的123.txt拷贝到指定文件夹下,如果有同名文件则替换,前者没有报错,后者没有新建

    FileUtils.copyFileToDirectory(
            new File("C://Users/han/Desktop/新建文件夹/123/123.txt"),
            new File("C://Users/han/Desktop/新建文件夹/456")
    );

    FileUtils.copyFile => 此方法将b文件夹下a.doc拷贝到mm下a.doc,前者不存在会报错,后者不存在会新建,如果后者存在同名文件则替换

    FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm/a.doc"));
    FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm","a.doc"));//与上边功能一样

    FileUtils.copyInputStreamToFile => 此方法将输入流的内容复制到新文件

    FileUtils.copyInputStreamToFile(new FileInputStream("D://test/test1"), new File("D://test/test1"));

    FileUtils.copyUrlToFile => 此方法URL对应的文件复制一份

    FileUtils.copyURLToFile(new URL("file:/test"), new File("D://test/test1"));

    FileUtils.deleteDirectory => 删除目录或文件,无法删除会抛异常

    FileUtils.deleteDirectory(new File("D://test/test1"));//递归删除目录

    FileUtils.deleteQuietly => 安静删除目录或文件,无法删除时也不会抛异常

    FileUtils.deleteQuietly(new File("D://test/test1"));//如果是目录,会级联删除;不会抛出异常,安静删除

    FileUtils.directoryContains => 判断是否包含文件或文件夹

    //判断是否包含文件或者文件夹  
    boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt"));  
    System.out.println(b);

    FileUtils.cleanDirectory => 清除目录中的内容,不会删除该目录, 遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常

    FileUtils.cleanDirectory(new File("D://test/test1"));

    FileUtils.waitFor => 等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次

    while (FileUtils.waitFor(new File("D://test/test1"), 60)) {}

    FileUtils.readFileToString => 读取目标文件,返回文件内容字符串

    String str = FileUtils.readFileToString(new File("D://test/test1"), "utf-8");

    FileUtils.readFileToByteArray => 读取目标文件,返回文件内容的bytes数组

    byte[] bytes = FileUtils.readFileToByteArray(new File("D://test/test1"));

    FileUtils.readLines => 读取目标文件每一行数据,返回list

    List<String> strs = FileUtils.readLines(new File("D://test/test1"), "utf-8");

    FileUtils.lineIterator =>  读取目标文件每一行数据,返回迭代器

    FileUtils.lineIterator(new File("D://test/test1"), "utf-8");

    FileUtils.writeStringToFile => 将字符串写入文件,[目标文件] [写入的字符串] [字符集] [是否追加]

    FileUtils.writeStringToFile(new File("D://test/test1"), "string", "utf-8", true);

    write可以接受charsequence类型的数据,string,stringbuilder和stringbuffer都是实现了charsequence接口

    FileUtils.write(new File("D://test/test1"), "target char sequence", "utf-8", true);
    FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes());//(file,字符数组)
    FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), true);//(file,字符数组,是否追加)
    FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), 0, 10);//(file,字符数组,起始位置,结束位置)
    FileUtils.writeByteArrayToFile(new File("D://test/test1"), "bytes".getBytes(), 0, 10, true);//(file,字符数组,起始位置,结束位置,是否追加)

    FileUtils.writeLines => writeLines多了一个lineEnding参数

    FileUtils.writeLines(new File("D://test/test1"), "utf-8", FileUtils.readLines(new File("D://test/test1"), "utf-8"));

    FileUtils.forceDelete => 强制删除

    FileUtils.forceDelete(new File("D://test/test1"));

    FileUtils.forceDeleteOnExit => 当JVM退出时,把file对象删除。如果是目录对象则递归删除子目录,跟delete的区别是一个是立马执行 一个是JVM退出后执行 forceDeleteOnExit 这个用来删除临时文件或缓存文件用的

    try {
    File file2 = new File("C:\Users\Administrator\Desktop\sign\");
    //当JVM退出时,把file对象删除。如果是目录对象则递归删除子目录,跟delete的区别是一个是立马执行 一个是JVM退出后执行 forceDeleteOnExit 这个用来删除临时文件或缓存文件用的
    FileUtils.forceDeleteOnExit(file2);
    } catch (Exception e) {
    e.printStackTrace();
    }

    FileUtils.forceMkdir => 强制创建文件目录,如果文件存在,会抛出异常

    FileUtils.forceMkdir(new File("D://test/test1"));

    FileUtils.forceMkdirParent => 强制创建父级目录

    FileUtils.forceMkdirParent(new File("D://test/test1"));

    checksum、checksumCRC32:类似于校验MD5和。如long csum = FileUtils.checksum(file, new CRC32()).getValue();,一般下载来一个文件后,为了安全可以校验一下

    FileUtils.checksum(new File("D://test/test1"), new CRC32());
    FileUtils.checksumCRC32(new File("D://test/test1"));

    FileUtils.isSymlink => 确定指定的文件是否是符号链接而不是实际文件

    FileUtils.isSymlink(new File("D://test/test1"));

    FileUtils.moveDirectory => 移动目录,移动的目录位置如果存在同名目录会报错

    FileUtils.moveDirectory(new File("D://test/test1"), new File("D://test/test1"));

    FileUtils.moveDirectoryToDirectory => 移动目录到指定目录下,第3个参数为,目录不存在是否创建

    FileUtils.moveDirectoryToDirectory(new File("D://test/test1"), new File("D://test/test1"), true);

    FileUtils.moveDirectory => 移动文件,移动的文件位置如果存在同名文件会报错

    FileUtils.moveFile(new File("D://test/test1/target"), new File("D://test/test1/file"));

    FileUtils.moveFileToDirectory => 移动文件到指定目录下,第3个参数为,目录不存在是否创建

    FileUtils.moveFileToDirectory(new File("D://test/test1/target"), new File("D://test/test1/dir"), true);

    FileUtils.moveToDirectory => 将文件或目录移动到目标目录。

    FileUtils.moveToDirectory(new File("D://test/test1/target"), new File("D://test/test1/dir"), true);

    FileUtils.iterateFiles => 返回文件迭代器  [ 目录 ] [ 过滤器 ] [ 递归 ]

    Iterator<File> files_iter = FileUtils.iterateFiles(new File("D://test"), new String[]{"test1", "test3"}, true);

    FileUtils.listFiles => 返回文件的列表 [ 目录 ] [ 过滤器 ] [ 递归 ]

    List<File> files = (List<File>) FileUtils.listFiles(new File("D://test"), new String[]{"doc"}, true);// 列出该目录下的所有doc文件,递归(扩展名不必带.doc)
    List<File> fileList = (List<File>)FileUtils.listFiles(dir,null,false);//列出该目录下的所有文件,不递归

    FileUtils.convertFileCollectionToFileArray => 把collection<File>转换成File[]

    FileUtils.convertFileCollectionToFileArray(files);

    FileUtils.isFileOlder => 该文件是否在该时间之前创建

    FileUtils.isFileNewer => 该文件是否在该时间之后创建

    String string="2016-12-20 10:00:00.023";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");  //最后三个大写SSS代表毫秒,写1个表示前边都不补0,写两个只有是两位0补全
    b= FileUtils.isFileOlder(new File("D:/b/a.doc"),sdf.parse(string));
    b= FileUtils.isFileNewer(new File("D:/b/a.doc"),sdf.parse(string))

    FileUtils.innerListFiles => 根据一个过滤规则获取一个目录下的文件
    FileUtils.validateListFilesParameters => 查找给定目录中的文件(以及可选的目录子目录)。所有找到的文件都由IOFileFilter过滤。
    FileUtils.setUpEffectiveFileFilter => 返回一个过滤器,该过滤器除了接受给定过滤器接受的{@link File}对象外,还接受其他文件。
    FileUtils.listFilesAndDirs => 查找给定目录中的文件(以及可选的目录子目录)。所有找到的文件都由IOFileFilter过滤。
    FileUtils.iterateFilesAndDirs => 允许对给定目录中的文件进行迭代(可选)它的子目录)。
    FileUtils.toSuffixes => 把指定的字符串数组变成后缀名格式字符串数组

  • 相关阅读:
    Javascript实现局部刷新
    Javascript模块化开发-轻巧自制
    javascript面向对象实例
    Javascript兼容和CSS兼容总结
    隐藏关机按钮
    数组排序
    常用数组获取最新和第一个元素值
    php 操作redis 以及几个常用命令
    git 常用命令
    JSON.parse和JSON.stringify的区别
  • 原文地址:https://www.cnblogs.com/deityjian/p/11106981.html
Copyright © 2011-2022 走看看