• commons-io工具类常用方法


    commons-io是Apache Commons项目的一个模块,提供了一系列处理I/O(输入/输出)操作的工具类和方法。它旨在简化Java I/O编程,并提供更多的功能和便利性。

    读取文件内容为字符串

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. // 读取整个文件字符为一个字符串
    3. System.out.println(FileUtils.readFileToString(new File(path), StandardCharsets.UTF_8));
    4. // llls
    5. // www
    6. // pwd
    7. // 你们

    读取文件内容为List

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. // 读取整个文件字符为一个字符串
    3. List list = FileUtils.readLines(new File(path), StandardCharsets.UTF_8);
    4. for (String s : list) {
    5. System.out.println(s);
    6. // llls
    7. // www
    8. // pwd
    9. // 你们
    10. }

    获取文件属性

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. // 获取文件名test
    3. System.out.println(FilenameUtils.getBaseName(path)); // test
    4. // 获取文件后缀
    5. System.out.println(FilenameUtils.getExtension(path)); // txt

    文件操作

    复制文件

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
    3. File file = new File(path);
    4. File targetFile = new File(targetPath);
    5. FileUtils.copyFile(file, targetFile);

    移动文件

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
    3. File file = new File(path);
    4. File targetFile = new File(targetPath);
    5. FileUtils.moveFile(file, targetFile);

    安静地删除文件

    1. String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
    2. File file = new File(path);
    3. FileUtils.deleteQuietly(file);

    获取指定目录下特定扩展名的所有文件 

    1. String path = "C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources";
    2. String[] extensions = new String[]{"jpg", "png", "avi"};
    3. File file = new File(path);
    4. // 第一个参数是要列出文件的目录,第二个参数是扩展名数组用于筛选文件,第三个参数是一个布尔值,用于指定是否包括子目录中的文件。
    5. List fileList = (List) FileUtils.listFiles(file, extensions, true);
    6. for (File f : fileList) {
    7. System.out.println("找到文件:" + f.getAbsolutePath());
    8. }

    流操作

    复制流

    1. InputStream inputStream = null;
    2. OutputStream outputStream = null;
    3. try {
    4. inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
    5. outputStream = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\target.txt");
    6. IOUtils.copy(inputStream, outputStream);
    7. System.out.println("文件复制成功");
    8. } catch (IOException e) {
    9. e.printStackTrace();
    10. } finally {
    11. // 关闭输入流和输出流
    12. IOUtils.closeQuietly(inputStream);
    13. IOUtils.closeQuietly(outputStream);
    14. }

    输入流转换为字节数组

    1. InputStream inputStream = null;
    2. try {
    3. inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
    4. byte[] bytes = IOUtils.toByteArray(inputStream);
    5. // 转换为字符串
    6. String content = new String(bytes, "UTF-8");
    7. System.out.println(content);
    8. } catch (IOException e) {
    9. e.printStackTrace();
    10. } finally {
    11. IOUtils.closeQuietly(inputStream);
    12. }

    文件过滤器

    并逻辑过滤器

    1. // 创建两个文件过滤器
    2. FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
    3. FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);
    4. // 创建同时满足两个条件的过滤器
    5. FileFilter combinedFilter = FileFilterUtils.and((IOFileFilter) filter1, (IOFileFilter) filter2);
    6. // 获取指定目录下满足过滤条件的文件
    7. File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
    8. File[] files = dir.listFiles(combinedFilter);
    9. // 遍历符合条件的文件
    10. for (File file : files) {
    11. System.out.println(file.getName());
    12. }

    或逻辑过滤器

    1. // 创建两个文件过滤器
    2. FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
    3. FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);
    4. // 创建同时满足两个条件的过滤器
    5. FileFilter combinedFilter = FileFilterUtils.or((IOFileFilter) filter1, (IOFileFilter) filter2);
    6. // 获取指定目录下满足过滤条件的文件
    7. File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
    8. File[] files = dir.listFiles(combinedFilter);
    9. // 遍历符合条件的文件
    10. for (File file : files) {
    11. System.out.println(file.getName());
    12. }

    文件后缀过滤器

    1. // 创建一个文件后缀过滤器
    2. String suffix = ".txt";
    3. FileFilter filter = FileFilterUtils.suffixFileFilter(suffix);
    4. File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
    5. File[] files = dir.listFiles(filter);
    6. // 遍历符合条件的文件
    7. for (File file : files) {
    8. System.out.println(file.getName());
    9. }

    字节操作

    输入流中读取数据到字节数组

    1. // 创建一个字节数组作为缓冲区
    2. byte[] buffer = new byte[1024];
    3. // 从输入流中读取数据并存储到缓冲区
    4. InputStream input = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
    5. int bytesRead = IOUtils.read(input, buffer);
    6. // 关闭输入流
    7. IOUtils.closeQuietly(input);
    8. // 处理读取到的数据
    9. System.out.println("实际读取的字节数: " + bytesRead);
    10. System.out.println("读取的数据: " + new String(buffer, 0, bytesRead));

    将字节数组写入输出流

    1. // 创建一个字节数组作为数据
    2. byte[] data = "Hello, world!".getBytes();
    3. // 创建一个输出流,并将字节数组写入到该流中
    4. OutputStream output = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test1.txt");
    5. IOUtils.write(data, output);
    6. // 关闭输出流
    7. IOUtils.closeQuietly(output);

    目录操作

    强制创建目录

    1. File directory = new File("path/to/directory");
    2. FileUtils.forceMkdir(directory);

  • 相关阅读:
    ClickHouse的 MaterializeMySQL引擎
    加拿大海运渠道操作流程及注意事项
    006python-字符串的使用
    酷宇宙:9月8日Web3加密行业新闻大汇总
    多线程以及rgbd转换点云
    go使用snmp库查询mib数据
    了解5个区别,FPmarkets用烛台和Renko图实现交易翻倍
    【PowerShell】PowerShell 7.1 之后版本的安装
    简单聊聊设备指纹设计
    React-Router之BrowserRouter 与 HashRouter切分方式和基本概念
  • 原文地址:https://blog.csdn.net/qq_63431773/article/details/133578628