IO流的使用

第一章 File

1 File理解

  • 文件和目录路径名的抽象表示
  • java.io.File

2 构造方法

2.1 语法

  • File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
  • File(String pathname,String child)从父路径名字符串和子路径名字符串创建的File实例
  • File(File pathname,String child)从父抽象路径名和子路径名字符串创建的File实例
  • File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例

2.2 代码

public class Class001_File {
    public static void main(String[] args) {
        //File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
        File file1 = new File("F://");//表示路径的字符串中,路径的分隔符可以使用//,/,\\但是在系统目录中默认使用\表示路径分离
        File file2 = new File("F://AAA/text.txt");
        File file3 = new File("text.txt");

        //File(String pathname,String child)从父路径名字符串和子路径名字符串创建的File实例
        File file4 = new File("F://AAA","text.txt");
        //File(File pathname,String child)从父抽象路径名和子路径名字符串创建的File实例
        File file5 = new File(file1,"AAA/text.txt");
        System.out.println(file1);
        System.out.println(file2);
        System.out.println(file3);
        System.out.println(file4);
        System.out.println(file5);

        System.out.println(file5.equals(file2));
    }
}

3 方法

3.1 语法

  • boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便仅允许读取操作
  • boolean canWriter() 测试应用程序是否可以修改此路径名表示的文件
  • boolean createNewFile() 当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件。注:不能创建文件夹只能创建文件
  • delete可以删除文件和不包含子类文件的文件夹
  • boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
  • File getAbsoluteFile() 返回此抽象路径名的绝对形式。
  • String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
  • long getFreeSpace() 通过此抽象路径名返回分区 named中未分配的字节数。
  • long getTotalSpace() 通过此抽象路径名返回分区 named的大小。
  • String getName() 返回此抽象路径名表示的文件或目录的名称。
  • String getParent() 返回此抽象路径名父项的路径名字符串,如果此路径名未指定父目录,则返回 null 。
  • File getParentFile() 返回此抽象路径名父项的抽象路径名,如果此路径名未指定父目录,则返回 null 。
  • boolean isAbsolute() 测试此抽象路径名是否为绝对路径。
  • boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
  • boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
  • boolean isHidden() 测试此抽象路径名指定的文件是否为隐藏文件。
  • long lastModified() 返回上次修改此抽象路径名表示的文件的时间。
  • long length() 返回此抽象路径名表示的文件的长度。
  • String[] list() 返回一个字符串数组,用于命名此抽象路径名表示的目录中的文件和目录
  • File[] listFiles() 返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
  • boolean mkdir() 创建此抽象路径名指定的目录。
  • boolean mkdirs() 创建此抽象路径名指定的目录,包括任何必需但不存在的父目录。
  • boolean renameTo(File dest) 重命名此抽象路径名表示的文件。

3.2 代码

public class Class002_File {
    public static void main(String[] args) throws IOException {
        File file1 = new File("F://text.txt");
        File file2 = new File("F://HaHa/text.txt");
        File file3 = new File("text.txt");
        File file4 = new File("F://");

        //boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便仅允许读取操作
        //System.out.println(file1.setReadOnly());

        //boolean canWriter() 测试应用程序是否可以修改此路径名表示的文件
        System.out.println(file1.canWrite());

        //boolean createNewFile() 当且仅当具有此名称的文件尚不存在时,以原子方式创建由此抽象路径名命名的新空文件。
        //注:不能创建文件夹只能创建文件
        System.out.println(file1.createNewFile());
        //System.out.println(file2.createNewFile());//异常文件夹不存在
        System.out.println(file3.createNewFile());//默认创建在当前项目下
        //delete可以删除文件和不包含子类文件的文件夹
        //System.out.println(file1.delete());
        //boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
        System.out.println(file1.exists());

        //File getAbsoluteFile() 返回此抽象路径名的绝对形式。
        //String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
        System.out.println(file3.getAbsoluteFile());
        System.out.println(file3.getAbsolutePath());

        //long getFreeSpace() 通过此抽象路径名返回分区 named中未分配的字节数。
        System.out.println(file4.getFreeSpace());
        //long getTotalSpace() 通过此抽象路径名返回分区 named的大小。
        System.out.println(file4.getTotalSpace());

        //String getName() 返回此抽象路径名表示的文件或目录的名称。
        System.out.println(file1.getName());

        //String getParent() 返回此抽象路径名父项的路径名字符串,如果此路径名未指定父目录,则返回 null 。
        //File getParentFile() 返回此抽象路径名父项的抽象路径名,如果此路径名未指定父目录,则返回 null 。
        System.out.println(file2.getParent());
        System.out.println(file2.getParentFile());

        //boolean isAbsolute() 测试此抽象路径名是否为绝对路径。
        //boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
        //boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
        //boolean isHidden() 测试此抽象路径名指定的文件是否为隐藏文件。
        System.out.println(file1.isDirectory());

        //long lastModified() 返回上次修改此抽象路径名表示的文件的时间。
        System.out.println(new Date(new File("F://text.txt").lastModified()));
        System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new File("F://text.txt").lastModified()));

        //long length() 返回此抽象路径名表示的文件的长度。
        System.out.println(new File("F://text.txt").length());

        //String[] list() 返回一个字符串数组,用于命名此抽象路径名表示的目录中的文件和目录
        System.out.println(Arrays.toString(new File("F://PythonTest").list()));
        //File[] listFiles() 返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
        System.out.println(Arrays.toString(new File("F://PythonTest").listFiles()));

        //boolean mkdir() 创建此抽象路径名指定的目录。
        System.out.println(new File("F://ccc").mkdir());
        //boolean mkdirs() 创建此抽象路径名指定的目录,包括任何必需但不存在的父目录。
        System.out.println(new File("F://ccc/hehe/text.txt").mkdirs());
        System.out.println(new File("F://ccc/hehee/text.txt").getParentFile().mkdirs());

        //boolean renameTo(File dest) 重命名此抽象路径名表示的文件。
        System.out.println(file1.renameTo(new File("F://haha.txt")));

    }
}

第二章 io流分类

1 IO流理解

  • IO流: 数据的读入写出,文件的上传下载
    流: 一连串流动的数据,以先入先出的方式进行传输–>流就是管道
  • 数据源---->io---->目的地
  • 数据源 : 数据的来源
  • 目的地 : 数据流向的位置

2 流的分类

  • 操作单元分:
    字节流 : 万能流 ****
    字符流 : 纯文本内容
  • 流向分: 以程序为中心
    输入流
    输出流
  • 功能分:
    节点流 : 真实能做读入写出的
    功能流 : 增强节点流的功能,提高节点流的性能
  • 流之间的分类是相辅相成的,java.io包

第三章 字节输入流

1 理解

  • InputStream 字节输入流中最上层父类
  • 文件流 : FileInputStream 文件字节输入流->节点流 字节流 输入流
    操作文件,数据源为文件,使用文件字节输入流
  • 字节数组流 : ByteArrayInputStream 字节数组输入流 ->节点流 字节流 输入流
    操作字节数组,数据源是字节输入,使用字节数组输入流

2 语法

  • FileInputStream(File file) 通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。
  • 读入 int read() 每次读入一个字节数,返回读入到的字节,读不到返回-1
  • 提高效率,每次读入一车(字节数组)的数据,int read(byte[])
  • byte[] readAllBytes() 从输入流中读取所有剩余字节。

3 代码操作

public class Class001_IO {
    public static void main(String[] args) throws IOException {
        File src = new File("D://test.txt");
        //FileInputStream(File file) 通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。
        InputStream is = new FileInputStream(src);

        //读入 int read() 每次读入一个字节数,返回读入到的字节,读不到返回-1
        /*int num = is.read();
        System.out.println((char)num);
        System.out.println((char)(is.read()));
        System.out.println((char)(is.read()));
        System.out.println(is.read());*/

        //循环读入
        /*int num = -1; //记录每次读到的字节
        while((num=is.read())!=-1){
            System.out.println((char)num);
        }*/

        //提高效率,每次读入一车(字节数组)的数据
        //byte[] car = new byte[1024];
        //int read(byte[]) 每次读入一个字节数组的数据,返回读入到字节数组中数据的个数,没有读到返回-1
        //int len = is.read(car);
        //System.out.println(new String(car,0,len));

        //当内容比较多,需要重复读入,每次读入一个字节数组中的数据
        /*byte[] car = new byte[2];
        int len = -1; //记录每次读入到数组中数据的个数
        while((len = is.read(car))!=-1){
            System.out.println(new String(car,0,len));
        }*/

        //byte[] readAllBytes() 从输入流中读取所有剩余字节。
        byte[] arr = is.readAllBytes();
        System.out.println(new String(arr));

        //关闭
        is.close();
    }
}

第四章 字节输出流

1 理解

  • OutputStream 字节流输出流
  • FileOutputStream 文件字节输出流 -> 节点流 目的地为文件
  • ByteArrayOutputStream 字节数组输出流 -> 节点流 目的地为字节数组
  • 注意: 在输出流写出的时候,如果目的地文件不存在,系统会自动创建目的地文件,如果目的地文件所在路径不存在,抛出异常java.io.FileNotFoundException:(系统找不到指定的路径。)

2 步骤

  • 构建流,指定目的地
  • 写出
  • 刷出
  • 关闭

3 代码

public class Class002_IO {
    public static void main(String[] args) throws IOException {
        //1.构建流,指定目的地
        //FileOutputStream(String name)
        //OutputStream os = new FileOutputStream("D://test.txt");  //默认覆盖原文件中内容
        OutputStream os = new FileOutputStream("D://BBB/test2.txt",true);  //boolean参数->true为追加  false为覆盖

        //2.写出
        os.write(97);

        byte[] arr = "你好再见".getBytes();

        os.write(arr);

        //3.刷出
        os.flush();

        //4.关闭
        os.close();
    }
}

第四章 文件拷贝

1 字节流实现文件拷贝

1.1 过程

  • 数据源–>输入流–>程序–>输出流–>目的地

1.2 步骤

​ 1.构建流(输入流 输出流)
​ 2.读入写出
​ 3.刷出
​ 4.关闭 (后打开的先关闭)

1.3 代码

public class Class003_CopyFile {
    public static void main(String[] args) {
        InputStream is = null;
        OutputStream os = null;
        try {
            // 1.构建流(输入流  输出流)
            is = new FileInputStream("D://test.txt");
            os = new FileOutputStream("D://DDD/test.txt");
            // 2.读入写出
            byte[] car = new byte[1024];
            int len = -1; //记录每次读入到字节数组中数据的个数
            while((len = is.read(car))!=-1){
                os.write(car,0,len);
            }
            // 3.刷出
            os.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 4.关闭
            if(os!=null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2 字符流实现文件拷贝

2.1 理解

  • 字符流 (纯文本数据)
  • Reader 字符输入流
    • FileReader 文件字符输入流 ->节点流
  • Writer 字符输出流
    • FileWriter 文件字符输出流 ->节点流
  • 通过字符流实现文件拷贝

2.2 步骤

  • 构建流(输入,输出)
  • 读写
    • 读入 int read() 每次读入一个字符数据
    • 读入 int read(char[] cbuf) 将字符读入数组。返回读取的字符数,如果已到达流的末尾,则返回-1
    • void write(char[] cbuf) 写一个字符数组。
    • void write(char[] cbuf, int off, int len) 写一个字符数组的一部分。
    • void write(int c) 写一个字符。
    • void write(String str) 写一个字符串。
    • void write(String str, int off, int len) 写一个字符串的一部分。
  • 刷出
  • 关闭

2.3 代码

public class Class001_CopyFile {
    public static void main(String[] args) throws IOException {
        //1.构建流(输入,输出)
        Reader rd = new FileReader("D://test.txt");
        Writer rt = new FileWriter("D://dest.txt");
        //2.读写
        //读入 int read() 每次读入一个字符数据
        //读入 int read(char[] cbuf) 将字符读入数组。返回读取的字符数,如果已到达流的末尾,则返回-1
        char[] car = new char[1024];
        int len = -1; //记录每次读入到数组中数据的个数
        while((len=rd.read(car))!=-1){
            //void write(char[] cbuf) 写一个字符数组。
            //void write(char[] cbuf, int off, int len) 写一个字符数组的一部分。
            //void write(int c) 写一个字符。
            //void write(String str) 写一个字符串。
            //void write(String str, int off, int len) 写一个字符串的一部分。
            rt.write(car,0,len);
        }
        //3.刷出
        rt.flush();
        //4.关闭
        rt.close();
        rd.close();
    }
}

第五章 功能流

  • 使用:包裹节点流使用
  • 缓冲流 Buffered : 加快节点流的读写效率

5.1 字节缓冲流

5.1.1 理解

  • 字节输入缓冲流 BufferedInputStream
  • 字节输出缓冲流 BufferedOutputStream
  • 无新增方法,可以发生多态

5.1.2 代码

public class Class001_BufferedInputStream {
    public static void main(String[] args) throws IOException {
        //1.构建流
        InputStream is = new BufferedInputStream(new FileInputStream("D://test.txt"));
        OutputStream os = new BufferedOutputStream(new FileOutputStream("D://test1.txt"));

        //2.读入写出
        byte[] car = new byte[1024];
        int len = -1;
        while((len = is.read(car))!=-1){
            os.write(car,0,len);
        }

        //3.刷出
        os.flush();

        //4.关闭
        os.close();
        is.close();
    }
}

5.2 字符缓冲流

5.2.1 理解

  • 字符输入缓冲流 BufferedReader

    • 新增功能: String readLine() 读一行文字。
  • 字符输出缓冲流 BufferedWriter

    • 新增功能: void newLine() 写一个行分隔符。
  • 存在新增功能,不能发生多态

5.1.2 代码

public class Class002_BufferedReader {
    public static void main(String[] args) throws IOException {
        //1.构建流(输入,输出)
        BufferedReader rd = new BufferedReader(new FileReader("D://test.txt"));
        BufferedWriter rt = new BufferedWriter(new FileWriter("D://dest.txt"));
        //2.读写
        String msg = null;
        while((msg=rd.readLine())!=null){
            rt.write(msg);
            //rt.newLine(); //换行符
        }
        //3.刷出
        rt.flush();
        //4.关闭
        rt.close();
        rd.close();
    }
}

5.3 Date流

5.3.1 理解

  • Data流 | 基本数据类型流 : 读写数据+保留数据类型->基本数据类型|字符串

    • 是字节流的功能流
  • DataInputStream Data输入流

  • 新增功能 : readXxx()

  • DataOuutputStream Data输出流

    • 新增功能 : writeXxx()
  • 注意: 读入与写出的顺序保持一致
    读入数据的时候必须从源文件中读入,否则抛出异常 java.io.EOFException

  • 字节流的功能流

5.3.2 代码

public class Class003_DataInputStream {
    public static void main(String[] args) throws IOException {
		write("F://test1.txt");
        read("F://test1.txt");
    }

    //写出
    public static void write(String path) throws IOException {
        //1.构建输出流
        DataOutputStream os = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path)));
        //2.准备数据
        int i = 100;
        char ch = 'a';
        boolean flag = false;
        String str = "哈哈";

        //3.写出
        os.writeInt(i);
        os.writeChar(ch);
        os.writeBoolean(flag);
        os.writeUTF(str);

        //4.刷出
        os.flush();

        //5.关闭
        os.close();
    }


    //读入
    public static void read(String path) throws IOException {
        //1.构建输入流
        DataInputStream is = new DataInputStream(new BufferedInputStream(new FileInputStream(path)));

        //2.读入
        int i = is.readInt();
        char ch = is.readChar();
        boolean flag = is.readBoolean();
        String msg = is.readUTF();
        //3.处理数据
        System.out.println(i);
        System.out.println(ch);
        System.out.println(flag);
        System.out.println(msg);

        //4.关闭
        is.close();
    }
}

第六章 object与系列化

1 Object流|对象流|引用数据类型流

  • 字节流的功能流
  • ObjectInputStream 反序列化输入流
    • 新增方法 Object readObject() 从ObjectInputStream中读取一个对象。 等等
  • ObjectOutputStream 序列化输出流
    • 新增方法 void writeObject(Object obj) 将指定的对象写入ObjectOutputStream。

2 序列化

2.1理解

  • 序列化: 将对象数据转为可存储或者可传输的状态的过程
  • 不是所有类型的数据都能序列化 java.io.Serializable
    如果写出的对象类型没有实现序列化接口,会遇到运行时异常java.io.NotSerializableException
  • 序列化与反序列化顺序保持一致
  • 不是所有的属性都需要序列化 transient
  • static的成员不会被序列化
  • 如果父类实现类序列化接口,子类所有内容都可以进行序列化
  • 子类实现了序列化接口,只能序列化子类独有的内容

2.2 序列号

  • 序列号: 当实现了序列化的类型默认存在一个序列号

  • 当类中的成员发生改变,序列号默认会重新生成

  • 作用: 使用序列号可以实现检查前后版本不一致问题

  • 解决不同版本的兼容问题: 手动设置序列号

2.3 快捷键

​ 通过快捷键生成序列号:
​ 1.类型必须实现了序列化接口
​ 2.Setting中进行配置
​ 3.双击类名alt+enter,自动生成序列号

3 代码

public class Class004_Obect {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //testWrite("D://heihei.txt");
        testRead("D://heihei.txt");
    }

    public static void testRead(String path) throws IOException, ClassNotFoundException {
        //1.构建输入流
        ObjectInputStream is = new ObjectInputStream(new FileInputStream(path));
        //2.读入数据
        Person p = (Person) is.readObject();
        int[] arr = (int[]) is.readObject();
        //3.处理数据
        System.out.println(p);
        System.out.println(Arrays.toString(arr));

        //4.关闭
        is.close();
    }

    //序列化输出
    public static void testWrite(String path) throws IOException {
        //1.定义输出流
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(path));
        //2.准备数据
        Person p = new Person("张三",18);
        p.a = 10;
        int[] arr = {1,2,3,4,5};
        //3.写出
        os.writeObject(p);
        os.writeObject(arr);

        //4.刷出
        os.flush();

        //5.关闭
        os.close();

        p.a = 100;
    }
}

第七章 Commons-io

1 理解

  • CommonsIO 是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等。
  • 是一个第三方的开源组件

2 使用步骤

  • 使用第三方组件的步骤:
    1.对应官网中下载源码 jar
    2.在项目下新建一个文件夹目录lib,lib下存放以后项目所依赖的所有jar包
    3.选中jar包,右键add as lib…
    4.在项目下对应类中进行使用

在这里插入图片描述

3 commons-io 的使用

3.1. IO工具类IOUtils

  • IOUtils.copy(InputStream input, OutputStream output) // 此方法有多个重载方法,满足不同的输入输出流
  • // 这个方法适合拷贝较大的数据流,比如2G以上
    IOUtils.copyLarge(Reader input, Writer output) // 默认会用1024*4的buffer来读取
  • IOUtils.toInputStream(String input, String encoding) // 通过文本获取输入流 , 可以指定编码格式
  • IOUtils.toBufferedInputStream(InputStream input) // 获取一个缓冲输入流,默认缓冲大小1KB,也可以指定缓冲大小
  • IOUtils.toBufferedReader(Reader reader) // 获取一个字符缓冲流,可指定缓冲大小

3.2. IO 工具类 FilenameUtils

  • 这个工具类是用来处理文件名(文件路径)的,可以轻松解决不同操作系统文件名称规范不同的问题,里面的方法都是静态的,直接用类进行调用
  • FilenameUtils.getBaseName(String filename) // 去除目录和后缀后的文件名
  • FilenameUtils.getExtension(String filename) // 获取文件的后缀
  • FilenameUtils.getName(String filename) // 获取文件名
  • FilenameUtils.getPath(String filename) // 去除盘符后的路径
  • FilenameUtils.getPrefix(String filename) // 盘符
  • isExtension(String fileName, String text) // 判断fileName是否是text后缀名

3.3. IO 工具类 FileUtils

  • 提供文件操作,如移动文件、读取文件、检查文件是否存在等的方法
  • 复制文件夹
    • FileUtils.copyDirectory(File srcDir, File destDir) // 复制文件夹(文件夹里面的文件内容
      也会复制)
    • FileUtils.copyDirectory(File srcDir, File destDir, FileFilter filter) // 复制文件夹,
      带有文件过滤功能
    • FileUtils.copyDirectoryToDirectory(File srcDir, File destDir) // 以子目录的形式将文件
      夹复制到到另一个文件夹下
  • 复制文件
    • FileUtils.copyFile(File srcFile, File destFile) // 复制文件
    • FileUtils.copyFileToDirectory(File srcFile, File destDir) // 复制文件到一个指定的目录
  • 把字符串写入文件
    • FileUtils.writeStringToFile(File file, String data, String encoding) // 字符串以指定的编码写到文件
    • FileUtils.writeStringToFile(File file, String data, String encoding, booleanappend) // 指定知否追加
  • 字节数组写入文件
    FileUtils.writeByteArrayToFile(File file, byte[] data) // 系列方法,可以指定追加,偏移量等
  • 文件移动
    FileUtils.moveFile(File srcFile, File destFile) // 移动文件
  • 删除文件夹
    FileUtils.deleteDirectory(File directory) // 删除文件夹,包括文件夹和文件夹里面所有的文件

3.4. FileSystemUtils的使用

  • 仅有这一个方法,及其重载方法 FileSystemUtils.freeSpaceKb() throws IOException

4 代码

public class Class001_CommonsIO {
    public static void main(String[] args) throws IOException {
        //#### IO工具类IOUtils
        //`IOUtils.copy(InputStream input, OutputStream output) `// 此方法有多个重载方法,满足不同的输入输出流
        IOUtils.copy(new FileInputStream("D://test.txt"),new FileOutputStream("D://xixi.txt"));

        //IO 工具类 FilenameUtils
        //`FilenameUtils.getBaseName(String filename)` // 去除目录和后缀后的文件名
        System.out.println(FilenameUtils.getBaseName("D://test.txt"));
        //`FilenameUtils.getExtension(String filename)` // 获取文件的后缀
        System.out.println(FilenameUtils.getExtension("D://logo.png"));
        //`isExtension(String fileName, String text) `// 判断fileName是否是text后缀名
        System.out.println(FilenameUtils.isExtension("D://logo.jpg","png"));

        //IO 工具类 FileUtils
        //`FileUtils.copyFile(File srcFile, File destFile)` // 复制文件
        FileUtils.copyFile(new File("D://test.txt"), FileUtils.getFile("D://hehe.txt"));

        //`FileUtils.copyFileToDirectory(File srcFile, File destDir)` // 复制文件到一个指定的目录
        FileUtils.copyFileToDirectory(new File("D://test.txt"), new File("D://eee")); //目标路径不存在,也可以帮助创建

        //`FileUtils.writeStringToFile(File file, String data, String encoding, boolean append)`// 指定知否追加
        FileUtils.writeStringToFile(new File("D://test.txt"), "\r\nwangwuwuwuwuwuwuwu", "UTF-8",true);
        //`FileUtils.deleteDirectory(File directory)` // 删除文件夹,包括文件夹和文件夹里面所有的文件
        FileUtils.deleteDirectory(new File("D://DDD"));

        //`FileUtils.copyDirectory(File srcDir, File destDir)` // 复制文件夹(文件夹里面的文件内容也会复制)
        FileUtils.copyDirectory(new File("D://AAA"), new File("D://BBB"));

        //`FileUtils.copyDirectoryToDirectory(File srcDir, File destDir)` // 以子目录的形式将文件夹复制到到另一个文件夹下
        FileUtils.copyDirectoryToDirectory(new File("D://AAA"), new File("D://BBB"));

        //`FileUtils.copyDirectory(File srcDir, File destDir, FileFilter filter)` // 复制文件夹,带有文件过滤功能
        FileUtils.copyDirectory(new File("D://AAA"), new File("D://HAHA"), FileFilterUtils.fileFileFilter());
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值