java - 如何用Java将文件夹中的所有文件一一读取数据?

标签 java

如何使用Java从文件夹中的所有文件(逐个)读取数据?

这段代码只是返回文件名,我正在寻找更深入的搜索:

File folder = new File("/home/user_name/Downloads/textfiles/");
File[] listOfFiles = folder.listFiles();

for (File file : listOfFiles) {
    if (file.isFile()) {
        System.out.println(file.getName());
    }
}

最佳答案

无需任何外部库,只需使用 java.nio 即可完成此操作。

流程如下:

代码采用的路径为 String并创建一个java.nio.Path (在本例中使用常量 String 路径完成)。然后它准备一个 Map<String, List<Strings>即将文件名和内容合一存储String每行。之后,它使用DirectoryStream<Path>读取目录内容。从 java.nio 到文件路径列表并存储两者, Files.readAllLines(Path path) 读取的内容作为List<String>以及 Map 中的绝对文件路径.

最后,它只是打印出所有读取的内容,并用一行长破折号分隔...

试试吧,也许对你的搜索有帮助。

import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class FileContentReader {

    private static final String FOLDER_PATH = "Y:\\our\\destination\\folder\\";

    public static void main(String[] args) {
        Path folderPath = Paths.get(FOLDER_PATH);

        // prepare a data structure for a file's name and content
        Map<String, List<String>> linesOfFiles = new TreeMap<String, List<String>>();

        // retrieve a list of the files in the folder
        List<String> fileNames = new ArrayList<>();
        try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(folderPath)) {
            for (Path path : directoryStream) {
                fileNames.add(path.toString());
            }
        } catch (IOException ex) {
            System.err.println("Error reading files");
            ex.printStackTrace();
        }

        // go through the list of files
        for (String file : fileNames) {
            try {
                // put the file's name and its content into the data structure
                List<String> lines = Files.readAllLines(folderPath.resolve(file));
                linesOfFiles.put(file, lines);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // finally, print everything
        linesOfFiles.forEach((String fileName, List<String> lines) -> {
            System.out.println("Content of " + fileName + " is:");
            lines.forEach((String line) -> {
                System.out.println(line);
            });
            System.out.println("————————————————————————————————");
        });
    }
}

关于java - 如何用Java将文件夹中的所有文件一一读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52369327/

相关文章:

java - 如何使用 spring-batch 从文件夹中连续读取文件?

java - 我在Windows中安装了Hadoop,但是当我运行hadoop示例失败时

java - 如何解析 XML 标签 <m :properties> for my Android application using Java?

java - 读取Spring Boot嵌入式Tomcat中的context.xml

java - 从 Java Soap 客户端使用 .NET Web 服务?

java - 如果在设定的时间段后无法找到页面上的文本,Selenium Webdriver Java 代码将显示消息

java - Apache POI XSFTable.java :294 arrayindex out of bounds

java - 使用向导插件

java - 你如何在没有教程的情况下学习框架

java - 多线程环境下 LinkedList<T> clear 和 new LinkedList<T> 的区别