首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用BufferedReader读取行并检查文件结尾?

使用BufferedReader读取行并检查文件结尾?
EN

Stack Overflow用户
提问于 2018-10-11 04:17:58
回答 2查看 0关注 0票数 0

如果我的代码中有这样的东西:

代码语言:javascript
复制
String line = r.readLine();  //Where r is a bufferedReader

如果下一行是文件的结尾,我该如何避免崩溃?(即null)

我需要阅读下一行,因为可能有一些我需要处理的东西,但如果没有代码只是崩溃。

如果有什么东西那么一切都没问题,但我不能保证那里会有东西。

所以,如果我做了类似的事情:(伪代码):

代码语言:javascript
复制
if (r.readLine is null)
//End code

else {check line again and excecute code depending on what the next line is}

我遇到类似这样的问题是,当我检查该行反对null时,它已经移动到下一行,所以我该如何再次检查它?

我没有找到办法做到这一点 - 任何建议都会有很大的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-10-11 12:58:02

您可以使用以下内容检查文件的结尾。

代码语言:javascript
复制
public bool isEOF(BufferedReader br)  
{
     boolean result;

     try 
     {
         result = br.ready();
     } 
     catch (IOException e)
     {
         System.err.println(e);
     }
     return result;
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-11 13:56:35

首先是一个问题,为什么不使用“ 功能编程方法 ”?无论如何,自Java 1.8以来添加了一个新方法lines(),它允许BufferedReader将内容返回为Stream。它从文件中获取所有行作为流,然后您可以根据您的逻辑对字符串进行排序,然后在列表/集中收集它并写入输出文件。如果使用相同的方法,则无需担心NullPointerException。以下是相同的代码片段: -

代码语言:javascript
复制
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;

public class LineOperation {
    public static void main(String[] args) throws IOException {
            Files.newBufferedReader(Paths.get("C://xyz.txt")).
            lines().
            collect(Collectors.toSet()). // You can also use list or any other Collection
            forEach(System.out::println);
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档