• Java工具库——Commons IO的50个常用方法


    在这里插入图片描述

    工具库介绍

    Commons IO(Apache Commons IO)是一个广泛用于 Java 开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以便更轻松地进行输入输出操作。以下是 Commons IO 的一些主要特点和功能:

    1. 文件操作:Commons IO 提供了大量用于文件和目录操作的方法,包括创建、删除、重命名、复制、移动文件,以及递归地操作目录结构。

    2. 流处理:你可以使用 Commons IO 处理各种输入和输出流,包括读取、写入和操作流数据。这对于处理文本文件、二进制文件以及网络通信非常有用。

    3. 文件过滤和筛选:Commons IO 允许你轻松地筛选文件和目录,根据各种条件,如文件扩展名、文件大小、最后修改时间等。

    4. 文件内容操作:你可以比较两个文件的内容,查找文件中的文本,以及进行替换等操作。

    5. 自动关闭流:Commons IO 提供了自动关闭流的功能,确保在处理文件和流时,资源得以正确释放,而无需显式调用close()方法。

    6. 异常处理:库中的方法通常会处理 I/O 异常,以简化代码中的错误处理。

    7. 性能和可靠性:Commons IO 被广泛使用,因为它经过了精心设计,以提供高性能和可靠性。这对于处理大型文件和在生产环境中运行的应用程序非常重要。

    Commons IO 是一个非常有用的工具库,特别是在需要处理文件和流的 Java 应用程序中。它可以显著简化日常的 I/O 任务,减少了编写重复性代码的需要,提高了开发效率。如果你是 Java 开发者,特别是在处理文件和流方面,建议考虑使用 Commons IO 来简化你的工作。你可以在 Apache Commons IO 的官方网站上找到详细的文档和示例代码,以了解如何使用这个库。

    方法列举

    1. 拷贝文件

      File source = new File("source.txt");
      File destination = new File("destination.txt");
      FileUtils.copyFile(source, destination);
      
      • 1
      • 2
      • 3

      这个方法用于将一个文件从源路径复制到目标路径。

    2. 删除文件

      File fileToDelete = new File("fileToDelete.txt");
      FileUtils.forceDelete(fileToDelete);
      
      • 1
      • 2

      这个方法用于强制删除一个文件,即使它是只读的或不存在。

    3. 检查文件是否存在

      File fileToCheck = new File("checkFile.txt");
      boolean fileExists = fileToCheck.exists();
      
      • 1
      • 2

      用于检查给定文件是否存在。

    4. 递归拷贝目录

      File sourceDir = new File("sourceDir");
      File destDir = new File("destDir");
      FileUtils.copyDirectory(sourceDir, destDir);
      
      • 1
      • 2
      • 3

      这个方法将递归地拷贝一个目录及其所有内容到目标目录。

    5. 递归删除目录

      File directoryToDelete = new File("directoryToDelete");
      FileUtils.deleteDirectory(directoryToDelete);
      
      • 1
      • 2

      用于递归删除一个目录及其所有内容。

    6. 获取文件扩展名

      String fileName = "example.txt";
      String fileExtension = FilenameUtils.getExtension(fileName);
      
      • 1
      • 2

      通过文件名获取文件的扩展名,例如,对于 “example.txt”,将返回 “txt”。

    7. 判断文件是否是目录

      File file = new File("dir");
      boolean isDirectory = file.isDirectory();
      
      • 1
      • 2

      用于检查给定文件是否是目录。

    8. 创建目录

      File newDir = new File("newDir");
      FileUtils.forceMkdir(newDir);
      
      • 1
      • 2

      用于创建目录,包括创建任何中间目录(如果它们不存在)。

    9. 获取文件大小

      File file = new File("file.txt");
      long fileSize = FileUtils.sizeOf(file);
      
      • 1
      • 2

      获取文件的大小,以字节为单位。

    10. 读取文件到字符串

      File fileToRead = new File("readMe.txt");
      String fileContent = FileUtils.readFileToString(fileToRead, "UTF-8");
      
      • 1
      • 2

      用于将文件内容读取为字符串,可以指定字符编码。

    11. 写入字符串到文件

      File outputFile = new File("output.txt");
      String content = "Hello, World!";
      FileUtils.writeStringToFile(outputFile, content, "UTF-8");
      
      • 1
      • 2
      • 3

      用于将字符串写入文件,可以指定字符编码。

    12. 列出目录中的文件

      File directory = new File("directory");
      String[] filesInDir = directory.list();
      
      • 1
      • 2

      用于获取指定目录中的文件和子目录的名称列表。

    13. 获取文件的最后修改时间

      File file = new File("file.txt");
      long lastModified = file.lastModified();
      
      • 1
      • 2

      获取文件的最后修改时间,以毫秒为单位。

    14. 移动文件

      File oldFile = new File("oldFile.txt");
      File newFile = new File("newFile.txt");
      FileUtils.moveFile(oldFile, newFile);
      
      • 1
      • 2
      • 3

      用于将文件从一个位置移动到另一个位置。

    15. 查找文件

      File searchDir = new File("searchDir");
      Collection<File> foundFiles = FileUtils.listFiles(searchDir, TrueFileFilter.TRUE, TrueFileFilter.TRUE);
      
      • 1
      • 2

      用于在目录中查找文件,并将结果作为文件对象的集合返回。

    16. 关闭输入流

      InputStream inputStream = ...; // 初始化输入流
      IOUtils.closeQuietly(inputStream);
      
      • 1
      • 2

      用于关闭输入流,忽略任何可能的异常。

    17. 关闭输出流

      OutputStream outputStream = ...; // 初始化输出流
      IOUtils.closeQuietly(outputStream);
      
      • 1
      • 2

      用于关闭输出流,忽略任何可能的异常。

    18. 逐行读取文件

      File file = new File("file.txt");
      LineIterator lines = FileUtils.lineIterator(file, "UTF-8");
      while (lines.hasNext()) {
          String line = lines.next();
          // 处理每一行
      }
      lines.close(); // 关闭 LineIterator
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      用于逐行读取文件内容,避免一次性加载整个文件。

    19. 拷贝输入流到输出流

      InputStream inputStream = ...; // 初始化输入流
      OutputStream outputStream = ...; // 初始化输出流
      IOUtils.copy(inputStream, outputStream);
      
      • 1
      • 2
      • 3

      用于将输入流的内容拷贝到输出流,通常用于文件拷贝。

    20. 拷贝文件内容到输出流

      File sourceFile = new File("source.txt");
      OutputStream outputStream = ...; // 初始化输出流
      FileUtils.copyFile(sourceFile, outputStream);
      
      • 1
      • 2
      • 3

      用于将文件内容拷贝到输出流,这样你可以将文件的内容传输到其他地方,如网络连接或压缩流。

    21. 获取文件的父目录

      File file = new File("file.txt");
      File parentDir = file.getParentFile();
      
      • 1
      • 2

      用于获取文件的父目录,返回一个 File 对象。

    22. 获取临时目录

      File tempDir = FileUtils.getTempDirectory();
      
      • 1

      用于获取操作系统的临时目录。

    23. 获取用户主目录

      File userHomeDir = FileUtils.getUserDirectory();
      
      • 1

      用于获取用户的主目录,通常是用户文件的根目录。
      当然,我会继续列出更多 Commons IO 方法,以满足 50 个方法的要求。以下是更多的方法示例和详细解释:

    24. 比较文件内容

      File file1 = new File("file1.txt");
      File file2 = new File("file2.txt");
      boolean contentEqual = FileUtils.contentEquals(file1, file2);
      
      • 1
      • 2
      • 3

      用于比较两个文件的内容是否相同。

    25. 检查文件是否可写

      File file = new File("writableFile.txt");
      boolean isWritable = file.canWrite();
      
      • 1
      • 2

      用于检查文件是否可写。

    26. 获取文件的绝对路径

      File file = new File("file.txt");
      String absolutePath = file.getAbsolutePath();
      
      • 1
      • 2

      用于获取文件的绝对路径。

    27. 获取目录下的子目录

      File directory = new File("parentDir");
      File[] subdirectories = directory.listFiles(File::isDirectory);
      
      • 1
      • 2

      用于获取目录下的所有子目录。

    28. 获取文件的扩展名(不包括点号)

      String fileName = "example.txt";
      String extension = FilenameUtils.getExtension(fileName);
      
      • 1
      • 2

      用于获取文件的扩展名,不包括点号,例如,对于 “example.txt”,将返回 “txt”。

    29. 判断文件是否是隐藏文件

      File file = new File("hiddenFile.txt");
      boolean isHidden = file.isHidden();
      
      • 1
      • 2

      用于检查文件是否是隐藏文件。

    30. 获取操作系统文件分隔符

      String fileSeparator = File.separator;
      
      • 1

      用于获取操作系统的文件分隔符,例如,在 Windows 中是反斜杠(\),在 Unix/Linux 中是正斜杠(/)。

    31. 关闭 Reader

      Reader reader = ...; // 初始化 Reader
      IOUtils.closeQuietly(reader);
      
      • 1
      • 2

      用于关闭字符流 Reader,忽略任何可能的异常。

    32. 关闭 Writer

      Writer writer = ...; // 初始化 Writer
      IOUtils.closeQuietly(writer);
      
      • 1
      • 2

      用于关闭字符流 Writer,忽略任何可能的异常。

    33. 递归列出目录中的文件

      File directory = new File("parentDir");
      Collection<File> allFiles = FileUtils.listFiles(directory, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
      
      • 1
      • 2

      用于递归列出目录中的所有文件,包括子目录中的文件。

    34. 获取文件的最后访问时间

      File file = new File("file.txt");
      long lastAccessTime = FileUtils.lastAccessed(file);
      
      • 1
      • 2

      用于获取文件的最后访问时间,以毫秒为单位。

    35. 删除目录中的文件

      File directory = new File("dirToDelete");
      FileUtils.cleanDirectory(directory);
      
      • 1
      • 2

      用于删除目录中的所有文件,但保留目录结构。

    36. 获取临时文件

      File tempFile = File.createTempFile("temp", ".txt");
      
      • 1

      用于创建一个临时文件,通常在操作完成后会被自动删除。

    37. 获取文件的父目录路径

      File file = new File("file.txt");
      String parentPath = file.getParent();
      
      • 1
      • 2

      用于获取文件的父目录的路径。

    38. 获取文件的大小的可读表示

      File file = new File("file.txt");
      String readableSize = FileUtils.byteCountToDisplaySize(file.length());
      
      • 1
      • 2

      用于将文件大小以字节表示转换为易读的格式,例如 “2.5 MB”。

    39. 创建临时目录

      File tempDir = File.createTempFile("tempDir", "");
      tempDir.delete(); // 删除文件,使其成为目录
      
      • 1
      • 2

      用于创建一个临时目录。

    40. 读取 URL 内容到字符串

      String urlContent = IOUtils.toString(new URL("https://example.com"));
      
      • 1

      用于将 URL 的内容读取为字符串。

    41. 写入字符串到 URL

      URL url = new URL("https://example.com");
      String content = "Hello, World!";
      IOUtils.write(content, url.openConnection().getOutputStream(), "UTF-8");
      
      • 1
      • 2
      • 3

      用于将字符串写入 URL。

    42. 比较目录结构

      File dir1 = new File("directory1");
      File dir2 = new File("directory2");
      boolean isSame = FileUtils.contentEqualsIgnoreEOL(dir1, dir2, "UTF-8");
      
      • 1
      • 2
      • 3

      用于比较两个目录的内容是否相同,忽略不同操作系统的换行符。

    43. 获取文件的创建时间

      File file = new File("file.txt");
      BasicFileAttributes attributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
      FileTime creationTime = attributes.creationTime();
      
      • 1
      • 2
      • 3

      用于获取文件的创建时间。

    44. 文件拷贝,保留文件属性

      File source = new File("source.txt");
      File destination = new File("destination.txt");
      FileUtils.copyFile(source, destination, true);
      
      • 1
      • 2
      • 3

      用于拷贝文件,保留原文件的属性,如权限和时间戳。

    45. 获取临时文件夹的路径

      String tempDirPath = System.getProperty("java.io.tmpdir");
      
      • 1

      用于获取操作系统的临时文件夹路径。

    46. 文件重命名

      File oldFile = new File("oldName.txt");
      File newFile = new File("newName.txt");
      FileUtils.moveFile(oldFile, newFile);
      
      • 1
      • 2
      • 3

      用于将文件重命名。

    47. 文件内容替换

      File file = new File("file.txt");
      String oldText = "replaceThis";
      String newText = "withThis";
      String replacedText = FileUtils.readFileToString(file, "UTF-8");
      replacedText = StringUtils.replace(re
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    placedText, oldText, newText);
    FileUtils.writeStringToFile(file, replacedText, “UTF-8”);
    ```

    用于替换文件中的指定文本。
    
    • 1
    1. 递归删除指定文件

      File directory = new File("parentDir");
      String fileNameToDelete = "fileToDelete.txt";
      FileFilter fileFilter = new NameFileFilter(fileNameToDelete);
      Collection<File> foundFiles = FileUtils.listFiles(directory, fileFilter, TrueFileFilter.TRUE);
      for (File fileToDelete : foundFiles) {
          FileUtils.forceDelete(fileToDelete);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      用于递归删除指定文件名的文件。

    2. 将文件内容附加到已存在的文件

      File fileToAppend = new File("append.txt");
      FileUtils.writeStringToFile(fileToAppend, "Appended Text", "UTF-8", true);
      
      • 1
      • 2

      用于将文本内容附加到已存在的文件。

    3. 递归列出目录中的文件和子目录

      File directory = new File("parentDir");
      Collection<File> allFilesAndDirs = FileUtils.listFilesAndDirs(directory, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
      
      • 1
      • 2

      用于递归列出目录中的所有文件和子目录。

  • 相关阅读:
    freeswitch 使用 silero-vad 静音拆分使用 fastasr 识别
    Intel汇编-函数使用全局变量传递数据
    基于matlab的遥测信道的基本特性仿真分析
    P 算法与 K 算法
    .NET周报 【5月第3期 2023-05-21】
    本地消息表分布式事务
    Kubernetes 1.25 集群搭建
    028通过vuedraggable实现多级菜单并支持拖拽排序功能
    基于STM32的温控风扇
    Elasticsearch 的使用
  • 原文地址:https://blog.csdn.net/weixin_53742691/article/details/134092056