Java程序合并目录中所有文件的内容


在本文中,我们将学习如何使用 Java 将目录中所有文本文件的内容合并到一个文件中。它读取每个文件的数据并将其写入一个新文件,同时确保所有数据都以组织的方式存储。您将了解如何处理文件、读取其内容以及以编程方式合并它们。

File 类

java.io 包 包含 Java File 类它提供了文件和目录路径名的抽象表示。它通常用于创建文件和目录、搜索文件、删除文件以及执行其他与文件相关的操作。

File my_file = new File(my_dir, file_name);

File 对象表示磁盘上的特定文件或目录。

BufferedReader 类

BufferedReader 类 旨在通过缓冲数据有效地从字符输入流中读取文本。它允许读取字符、数组或整行,使其成为处理大量文本数据同时最大程度减少 I/O 操作的理想选择。这种缓冲机制提高了与直接从流中读取相比的性能。

BufferedReader my_reader = new BufferedReader(new FileReader(my_file));

list() 方法此方法用于获取指定目录 (my_dir) 内所有文件的文件名。文件名存储在 file_names 数组中,稍后将对其进行迭代以读取每个文件的内容。

String[] file_names = my_dir.list();

PrintWriter 类

java.io.PrintWriter 类 用于将格式化文本写入输出流,支持字符串、字符和其他数据类型。它还允许自动换行刷新,以便于创建文本文件。

我们将使用 PrintWriter 类中的 flush() 方法

my_writer.flush();

flush() 方法确保缓冲区中的所有数据都写入文件。

合并目录中所有文件的内容

以下是合并目录中所有文件内容的步骤:

  • 设置文件处理
    创建一个 File 对象来表示包含我们将使用的文本文件的目录,File 类的 list() 方法获取目录中的所有文件名,并创建一个 PrintWriter 对象将合并后的内容写入新文件。
  • 读取和写入文件内容
    使用 BufferedReader 一行一行读取其内容,并使用 PrintWriter 将内容写入新文件。
  • 完成
    使用 PrintWriter 的 flush() 方法确保所有数据都写入输出文件。

示例

要合并目录中所有文件的内容,Java 代码如下:

import java.io.*; // Importing classes for file handling
public class Demo {
    public static void main(String[] args) throws IOException {
        // Specify the directory where files are located
        File my_dir = new File("path to place where file is generated");

        // Create a PrintWriter to write the merged content into a new file
        PrintWriter my_writer = new PrintWriter("The .txt where changes are stored");

        // Get a list of all file names in the specified directory
        String[] file_names = my_dir.list();

        // Loop through each file name in the directory
        for (String file_name : file_names) {
            // Print the name of the file being read
            System.out.println("Content read from " + file_name);

            // Create a File object for the current file
            File my_file = new File(my_dir, file_name);

            // Create a BufferedReader to read the content of the file
            BufferedReader my_reader = new BufferedReader(new FileReader(my_file));

            // Write the file name as a header in the output file
            my_writer.println("The file contains " + file_name);

            // Read the content of the file line by line
            String my_line = my_reader.readLine();
            while (my_line != null) {
                // Write each line into the output file
                my_writer.println(my_line);

                // Read the next line
                my_line = my_reader.readLine();
            }

            // Flush the writer to ensure all content is written
            my_writer.flush();
        }

        // Print confirmation message after all files are merged
        System.out.println("All data from files have been read and merged into " + my_dir.getName());
    }
}

输出

All file contents will be merged into a single text file.

更新于: 2024年11月20日

620 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告