zoukankan      html  css  js  c++  java
  • Apache Commons IO之FileUtils的常用方法

    Apache Commons IO

    在学习io流的时候研究(翻译)了一下这个,只有FileUtils的某些方法,并不全面,还请谅解

    org.apache.commons.io

    这个包下定义了基于 streams, readers, writers and files.的实用工具类.

    org.apache.commons.io.comparator ##

    这个包下定义了基于文件的各种比较器的实现

    org.apache.commons.io.filefilter

    这个包定义了一个接口(IoFielFieldField),融合了FieldField1和FielnaMeField.

    org.apache.commons.io.input

    这个包提供输入类的实现,如输入流和读取字符流。

    org.apache.commons.io.monitor

    这个包提供了一个用于监视文件系统事件(目录和文件创建、更新和删除事件)的组件。

    org.apache.commons.io.output

    这个包提供输出类的实现, 如输出流和写入流

    org.apache.commons.io.serialization ##

    这个包提供了一个用于控制类反序列化的框架。

    FileUtils中的常用方法

    package com.wzlove.commons;
    
    import org.apache.commons.io.FileUtils;
    import org.junit.Test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * 测试FileUtiles中的常用方法
     *
     * @author WZLOVE
     * @create 2018-07-21 13:29
     */
    public class FileUtilsDemo {
    
    
        /**
         * static void	cleanDirectory(File directory)
         * 删除文件夹内的所有内容,但不删除本文件夹
         */
        @Test
        public void testCleanDirectory() throws IOException {
            // 注意的是创建的文件夹的虚拟路径
            File dir = new File("F:\ddd\aaa");
            FileUtils.cleanDirectory(dir);
        }
    
        /**
         * static boolean contentEquals(File file1, File file2)
         * 比较两个文件的内容是否相同,相同返回true,不同返回false(.注意的是两个文件不存在,也会返回true)
         */
        @Test
        public void testContentEquals() throws IOException {
            File file1 = new File("F:\ddd\aaa\a.txt");
            File file2 = new File("F:\ddd\aaa\b.txt");
            System.out.println(FileUtils.contentEquals(file1,file2));
        }
    
        /**
         * static File[] convertFileCollectionToFileArray(Collection<File> files)
         * 将集合转化为数组
         */
        @Test
        public void testConvertFileCollectionToFileArray(){
            ArrayList<File> fileList = new ArrayList<>();
            fileList.add(new File("C:\aa"));
            fileList.add(new File("D:\aa"));
            fileList.add(new File("E:\aa"));
            fileList.add(new File("F:\aa"));
            File[] files = FileUtils.convertFileCollectionToFileArray(fileList);
            for (int i = 0; i < files.length; i++) {
                System.out.println(files[i].getAbsolutePath());
            }
        }
    
        /**
         * static void	copyDirectory(File srcDir, File destDir)
         * 将srcDir目录下的文件复制到destDir目录下,文件存在则不重复复制
         * 还有很多重载的方法,可以传递文件过滤器等等
         */
        @Test
        public void testCopyDirectory() throws IOException {
            File srcDir = new File("F:\aaa");
            File destDir = new File("F:\bbb");
            FileUtils.copyDirectory(srcDir,destDir);
        }
    
        /**
         * static void	copyDirectoryToDirectory(File srcDir, File destDir)
         * 将srcDir整个文件夹放在destDir的文件夹下
         */
        @Test
        public void testCopyDirectoryToDirectory() throws IOException {
            File srcDir = new File("F:\aaa");
            File destDir = new File("F:\bbb");
            FileUtils.copyDirectoryToDirectory(srcDir,destDir);
        }
    
        /**
         * static void	copyFile(File srcFile, File destFile)
         * 将srcFile文件复制到destFile中,destFile不存在则会创建目标文件
         */
        @Test
        public void testCopyFile() throws IOException {
            File srcDir = new File("F:\aaa\1.txt");
            File destDir = new File("F:\bbb\a.txt");
            FileUtils.copyFile(srcDir,destDir);
        }
    
        /**
         * static void	copyFileToDirectory(File srcFile, File destDir)
         * 将srcFile文件复制到destDir的目录下
         */
        @Test
        public void testCopyFileToDirectory() throws IOException {
            File srcDir = new File("F:\aaa\1.txt");
            File destDir = new File("F:\bbb");
            FileUtils.copyFileToDirectory(srcDir,destDir);
        }
    
        /**
         * static void	copyToDirectory(File src, File destDir)
         * 复制文件或者文件夹到目标文件夹下
         */
        @Test
        public void testCopyToDirectory() throws IOException {
            File srcDir = new File("F:\aaa");
            File destDir = new File("F:\bbb");
            FileUtils.copyToDirectory(srcDir,destDir);
        }
    
        /**
         * static void	copyURLToFile(URL source, File destination)
         * Copies bytes from the URL source to a file destination.
         */
        @Test
        public void testCopyURLToFile() throws IOException {
            File destination = new File("F:\bbb\baidu.txt");
            FileUtils.copyURLToFile(new URL("http://ntlias-stu.boxuegu.com/#/index"),destination);
        }
    
        /**
         * static void	deleteDirectory(File directory)
         * 删除这个文件夹,全部删除,包括这个文件,和cleanDirectory方法做个对比
         */
        @Test
        public void testDeleteDirectory() throws IOException {
            File directory = new File("F:\bbb\ccc");
            FileUtils.deleteDirectory(directory);
        }
    
        /**
         * static boolean	deleteQuietly(File file)
         * 删除这个文件,不会抛出异常
         */
        @Test
        public void testDeleteQuietly() {
            File directory = new File("F:\bbb\a.txt");
            System.out.println(FileUtils.deleteQuietly(directory));
        }
    
        /**
         * static void	forceMkdir(File directory)
         * 创建文件夹,可以创建多级文件夹
         */
        @Test
        public void testForceMkdir() throws IOException {
            File directory = new File("F:\bbb\ccc\ddd\aaa");
            FileUtils.forceMkdir(directory);
        }
    
        /**
         * static void	forceMkdirParent(File file)
         * 为一个文件创建父路径,但不会创建这个文件(比较奇怪)
         */
        @Test
        public void testForceMkdirParent() throws IOException {
            File directory = new File("F:\bbb\aaa\ccc\a.txt");
            FileUtils.forceMkdirParent(directory);
        }
    
        /**
         * static String getUserDirectoryPath()
         * 返回用户的主目录
         */
        @Test
        public void testGetUserDirectoryPath(){
            String str = FileUtils.getUserDirectoryPath();
            System.out.println(str);
        }
    
        /**
         * static void	moveDirectory(File srcDir, File destDir)
         * 修改文件名,将srcDir.getName()的文件名更改为destDir.getName(),如果文件名存在,报错
         */
        @Test
        public void testMoveDirectory() throws IOException {
            File srcDir = new File("F:\aaa");
            File destDir = new File("F:\ccc");
            FileUtils.moveDirectory(srcDir,destDir);
        }
    
        /**
         * static void	moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)
         *  将src移动到destDir,后面的boolean表示是不是当destDir文件夹不存在时创建文件夹,false是不创建,true是创建
         *  如果src不存在报错,如果src已经存在destDir中,则报错
         */
        @Test
        public void testMoveDirectoryToDirectory() throws IOException {
            File srcDir = new File("F:\bbb");
            File destDir = new File("F:\eee");
            FileUtils.moveDirectoryToDirectory(srcDir,destDir,true);
        }
    
        /**
         * static void	moveFile(File srcFile, File destFile)
         * 修改文件名
         * static void	moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)
         * 移动一个文件到文件夹中,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建
         * static void	moveToDirectory(File src, File destDir, boolean createDestDir)
         * 移动文件或者文件夹到目标文件夹,最后的参数为true表示如果destDir不存在的话则创建,为false则不创建
         */
    
    
        /**
         * static FileInputStream openInputStream(File file)
         * 返回文件字节输入流
         */
        @Test
        public void testOpenInputStream() throws IOException {
            File file = new File("F:\bbb\1.txt");
            FileInputStream fis = FileUtils.openInputStream(file);
            // 可以进行字节流的读取操作
    
            fis.close();
        }
    
         /**
          * static FileOutputStream openOutputStream(File file)
          * 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,目录存在,清空文件内容
          */
    
        /**
         * static FileOutputStream	openOutputStream(File file, boolean append)
         * 返回字节输出流,如果文件等多及目录不存在,则创建多级目录,如果目录存在,则不会清空内容,输出到文件的时候,会追加到原内容的后面
         */
    
        /**
         * static byte[]	readFileToByteArray(File file)
         * 读取文件,返回字节数组
         */
        @Test
        public void testReadFileToByteArray() throws IOException {
            File file = new File("F:\bbb\1.txt");
            byte[] bytes = FileUtils.readFileToByteArray(file);
            System.out.println(new String(bytes));
        }
    
        /**
         * static String	readFileToString(File file, String encoding)
         * 按照指定编码格式读取文件
         */
        @Test
        public void testReadFileToString() throws IOException {
            File file = new File("F:\bbb\1.txt");
            String str = FileUtils.readFileToString(file,"UTF-8");
            System.out.println(str);
        }
    
        /**
         * static List<String>	readLines(File file, String encoding)
         *  按照指定编码读取文件,返回String集合,文件的每一行是一个元素
         */
        @Test
        public void testReadLines() throws IOException {
            File file = new File("F:\bbb\1.txt");
            List<String> list = FileUtils.readLines(file, "UTF-8");
            for (String s : list) {
                System.out.println(s);
            }
        }
    
        /**
         * static long	sizeOf(File file)
         * 返回文件或者文件夹的大小
         */
        @Test
        public void testSizeOf() throws IOException {
            File file = new File("F:\bbb\1.txt");
            long l  = FileUtils.sizeOf(file);
            System.out.println(l);
            File file1 = new File("F:\bbb");
            System.out.println(FileUtils.sizeOf(file1));
        }
    
        /**
         * static File	toFile(URL url)
         * Convert from a URL to a File.
         * 没理解
         */
        @Test
        public void testToFile() throws IOException {
            File file = FileUtils.toFile(new URL("file:\F:\bbb"));
            System.out.println(file.getAbsolutePath());
        }
    
        /**
         * static void	writeByteArrayToFile(File file, byte[] data)
         * 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeByteArrayToFile(File file, byte[] data, boolean append)
         * 向文件中写入字节数组,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         * static void	writeByteArrayToFile(File file, byte[] data, int off, int len)
         * 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeByteArrayToFile(File file, byte[] data, int off, int len, boolean append)
         * 将byte类型的数组data,从off索引开始,长度为len的内容输出到指定的文件,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         * static void	writeStringToFile(File file, String data, String encoding)
         * 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeStringToFile(File file, String data, String encoding, boolean append)
         * 按照指定的编码格式将String类型的数据写入到文件中,如果目标文件不存在,则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         */
    
    
        /**
         * static void	writeLines(File file, Collection<?> lines)
         * 将集合数据写入文件,每条数据占据一行,如果目标文件不存在,则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeLines(File file, Collection<?> lines, boolean append)
         *  将集合数据写入文件,每条数据占据一行,
         */
        @Test
        public void testWriteLines() throws IOException {
            File file = new File("F:\ddd\a.txt");
            ArrayList<String> coll = new ArrayList<>();
            coll.add("I love Java");
            coll.add("I love you");
            FileUtils.writeLines(file,coll);
        }
    
        /**
         * static void	writeLines(File file, Collection<?> lines, String lineEnding)
         * 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串,如果目标文件不存在,
         * 则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeLines(File file, Collection<?> lines, String lineEnding, boolean append)
         * 所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一个lineEnding字符串.如果目标文件不存在,
         * 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         */
        @Test
        public void tesWriteLines2() throws IOException {
            File file = new File("F:\ddd\a.txt");
            ArrayList<String> coll = new ArrayList<>();
            coll.add("I love Java");
            coll.add("I love Java");
            coll.add("I love Java");
            FileUtils.writeLines(file,coll,"I love you");
        }
    
        /**
         * static void	writeLines(File file, String encoding, Collection<?> lines)
         * 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在,
         * 则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeLines(File file, String encoding, Collection<?> lines, boolean append)
         * 按照encoding编码格式将集合数据写出到文件中,每条数据占据一行,如果目标文件不存在,
         *  则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         */
        @Test
        public void tesWriteLines3() throws IOException {
            File file = new File("F:\ddd\a.txt");
            ArrayList<String> coll = new ArrayList<>();
            coll.add("I love Java");
            coll.add("I love Java");
            coll.add("I love Java");
            FileUtils.writeLines(file,"UTF-8",coll);
        }
    
        /**
         * static void	writeLines(File file, String encoding, Collection<?> lines, String lineEnding)
         * 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一
         * 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在清空文件内容,再进行输入
         * static void	writeLines(File file, String encoding, Collection<?> lines, String lineEnding, boolean append)
         * 按照encoding编码格式将集合数据写出到文件中,所有的集合数据保存在一行,并且是间隔的,也就是每条集合数据后会跟一
         * 个lineEnding字符串,如果目标文件不存在, 则会创建目标文件,文件存在且最后一个参数是true,会将内容追加到原内容的后面
         */
        @Test
        public void tesWriteLines4() throws IOException {
            File file = new File("F:\ddd\a.txt");
            ArrayList<String> coll = new ArrayList<>();
            coll.add("I love Java");
            coll.add("I love Java");
            coll.add("I love Java");
            FileUtils.writeLines(file,"UTF-8",coll,"I love you");
        }
    
    }
  • 相关阅读:
    Activity
    清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)
    Android-- FragmentStatePagerAdapter分页
    使用NServiceBus开发分布式应用
    SOA、ESB、NServiceBus、云计算 总结
    ESB简介及选型(转) http://www.cnblogs.com/skyme/archive/2012/08/06/2623414.html
    C# 版dll 程序集合并工具
    83款 网络爬虫开源软件
    13个.Net开源的网络爬虫
    IE6浏览器的bug问题及相关解决的方法
  • 原文地址:https://www.cnblogs.com/wadmwz/p/9361668.html
Copyright © 2011-2022 走看看