使用java从文本文件中读取数据行

时间:2010-12-23 16:44:53

标签: java bufferedreader

我有一个x行数的文本文件。每行包含一个整数。当用户单击按钮时,将通过actionlistener执行操作,其中应列出文本文件上显示的所有值。但是,现在我将linenum设置为10意味着我已经告诉代码只使用10行文本文件。因此,如果我的文本文件只有3行/行数据...它将列出这些行,而对于其他7行的其余部分,它将吐出“null”。

我记得有一种方法可以使用省略号让程序知道你不知道确切的值,但最后根据给定的信息计算它。我的给定信息将带有数字(数据)的行数。

以下是代码的一部分。

private class thehandler implements ActionListener{     
public void actionPerformed(ActionEvent event){
BufferedReader inputFile=null;          
try {
    FileReader freader =new FileReader("Data.txt");
    inputFile = new BufferedReader(freader); 

    String MAP = "";
    int linenum=10;
    while(linenum > 0)
        { 
    linenum=linenum-1; 
    MAP = inputFile.readLine();//read the next line until the specfic line is found 

    System.out.println(MAP);
    }

    } catch( Exception y ) {    y.printStackTrace();    } 

}}  

3 个答案:

答案 0 :(得分:1)

linenum > 0放在下一行(MAP = inputFile.readLine()) != null上 并删除下一行,linenum=linenum-1; MAP = inputFile.readLine();,下次谷歌搜索可能会有所帮助+) 不会打印最后一行的空值,因为它将该行设置为当前行并将其与空值进行比较,因此如果最后一行为空,则不会打印它以及10行的限制是多少?你可以轻松地做到这一点你可以只为for循环添加一个索引并索引并检查&&如果i低于10

答案 1 :(得分:1)

测试从BufferedReader.readLine()返回的值,如果它是null stop looping,就像这样:

BufferedReader reader = new BufferedReader(new FileReader("Data.txt"));
try {
    for (String line; (line = reader.readLine()) != null;) {
        System.out.println(line);
    }
} finally {
    reader.close();
}
编辑:忘记了前10行的要求,您可以更改上面的代码将输出放在列表中并返回列表,然后您可以通过以下函数对其进行过滤:

public List<String> takeFirst(int howMany, List<String> lines) {
 return lines.size() <= howMany ? lines : lines.subList(0, howMany);
}

如果文件很大,那么这当然是效率低下的,如果这很重要,你最终会做类似的事情:

BufferedReader reader = new BufferedReader(new FileReader("Data.txt"));
try {
    int linesRead = 0;
    for (String line; (line = reader.readLine()) != null && linesRead < 10;) {
        System.out.println(line);
        linesRead += 1;
    }
} finally {
    reader.close();
}

哪个更丑,但只读取你需要的行。

答案 2 :(得分:0)

如果MAP的值为null,你怎么不打印MAP?