Java 读取文本文件的最干净方式&;处理每一行

Java 读取文本文件的最干净方式&;处理每一行,java,list,file,object,stream,Java,List,File,Object,Stream,我目前正在学习Java。我对如何以最有效的方式阅读文本文件感兴趣。我读到有可能使用流对象(这里的“对象”正确吗?)来实现这一点,并且已经给了它一个镜头。我能够使用以下代码打印文本文档中的每一行: private static void ReadFile(String filePath) { Stream<String> readFileStream = null; try { readFileStream = Files.lines(Paths.get

我目前正在学习Java。我对如何以最有效的方式阅读文本文件感兴趣。我读到有可能使用流对象(这里的“对象”正确吗?)来实现这一点,并且已经给了它一个镜头。我能够使用以下代码打印文本文档中的每一行:

private static void ReadFile(String filePath) {
    Stream<String> readFileStream = null;
    try {
        readFileStream = Files.lines(Paths.get(filePath));

    } catch (IOException e) {
        e.printStackTrace();
    }
    readFileStream.forEach(System.out::println);
}
private static void ReadFile(字符串文件路径){
Stream readFileStream=null;
试一试{
readFileStream=Files.lines(path.get(filePath));
}捕获(IOE异常){
e、 printStackTrace();
}
readFileStream.forEach(System.out::println);
}
我想用每一行做点什么。例如,我想在我的文本文档中输入一组名称,并让Java打印出每个名称的“Hello,NAME”。我该怎么做?如何单独访问一行,是否必须先将列表放入数组中才能遍历它

我们创建了一个名为readFileStream的流对象,这样说对吗?我想确保我的术语是正确的。此外,我们为什么要在流之后添加?我知道它们用于列表,但我不理解它们在这种情况下的含义


提前感谢。

这将一次读一行

    File file = new File("text.txt");

    try(BufferedReader br = new BufferedReader(new FileReader(file))){
        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

单独访问这些行很简单:您只需要详细说明以下表达式:
readFileStream.forEach(System.out::println)

把它变成这样:

readFileStream.forEach( line -> {
            System.out.println(line.toUpperCase());
        });
在我的插图中,我把每一行都变成大写。你可以做所有类型的处理,一旦你有一个单独的线

Files.lines(Paths.get(filePath))
   .filter(line -> line.startsWith(“J“))
   .forEach(line -> System.out.printf(“Hello, %s%n“, line));
你就快到了。阅读溪流。 流是一次性迭代,因此变量是多余的。
我添加了一个过滤,但也可以进行排序等。

Apache提供了一个很好的库:commons io。最新版本是2.5

以下是它的maven依赖项:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

公地io
公地io
2.5
这个库有很好的读取文件的方法

检查此方法:

List<String> listOfLines = FileUtils.readLines(file, encoding);
List listOfLines=FileUtils.readLines(文件,编码);

它将文件读入字符串列表。

如果我没有弄错的话,您不能在读取文件时修改它。下面是一个关于如何存储行并在以后修改它们的示例。至于这个“看看泛型谢谢,我同意你的答案!我真的很想使用Stream:DFileReader扩展InputStreamReader。所以从技术上来说,这是一条小溪