栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

io流是什么(io流java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

io流是什么(io流java)

第一章 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
        

        //循环读入
        

        //提高效率,每次读入一车(字节数组)的数据
        //byte[] car = new byte[1024];
        //int read(byte[]) 每次读入一个字节数组的数据,返回读入到字节数组中数据的个数,没有读到返回-1
        //int len = is.read(car);
        //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) 将字符读入数组。返回读取的字符数,如果已到达流的末尾,则返回-1void 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序列化与反序列化顺序保持一致不是所有的属性都需要序列化 transientstatic的成员不会被序列化如果父类实现类序列化接口,子类所有内容都可以进行序列化子类实现了序列化接口,只能序列化子类独有的内容 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.在项目下对应类中进行使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4cQwAD2B-1647784632184)(E:program安装资料笔记工具MarkdownPicturescommons_io设置序列号生成.png)]

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"), "rnwangwuwuwuwuwuwuwu", "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());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号