Java:从多行读取(外部文件)

时间:2016-01-28 14:46:37

标签: java

我正在尝试在文本文件中显示多行的内容。我可以用一行来做到没有问题,但是我添加了另一行,我不确定我需要添加到我的代码中以使其进入下一行。我需要myValues [1]与myValues [n]相同才能成为文件中的第二行。我相信我需要将新的String作为下一行,但我不确定如何使用此设置。

package a3;
import java.io.*;
public class A3
{
    public static void main(String [] args)
    {
        String animals = "animals.txt";
        String line = null;

        try
        {
            FileReader fileReader = new FileReader(animals);
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String aLine = bufferedReader.readLine();
            String myValues[] = aLine.split(" ");

            int n = 0;
            while((line = bufferedReader.readLine()) != null)
            {
                System.out.println(myValues[n] + " " + myValues[1]);
                n++;
            }   
            bufferedReader.close();         
        }
        catch(FileNotFoundException ex)
        {
            System.out.println("Unable to open file '" + animals + "'");                
        }
        catch(IOException ex)
        {
            System.out.println("Error reading file '" + animals + "'");                  
        }
    }
}

3 个答案:

答案 0 :(得分:0)

在您的代码中,数组myValues永远不会更改,并且始终包含第一行文本的值。每次获得新行时都需要更改它,这在while循环中完成:

[...]
while((line = bufferedReader.readLine()) != null)
        {
            myValues[] = line.split(" ");
            System.out.println(myValues[n] + " " + myValues[1]);
            n++;
        }   

显然没有经过测试......

答案 1 :(得分:0)

您还可以读取字符串列表中的所有行,如下所示:

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.List;


List<String> lines = Files.readAllLines(new File(animals).toPath(), Charset.defaultCharset());

然后迭代线列表,拆分值并输出它们。

答案 2 :(得分:0)

这是另一种从文件中读取行并进行处理的简单方法: 有一个java.io.LineNumberReader类有助于实现它。

示例代码段:

LineNumberReader lnr = new LineNumberReader(new FileReader(new File(filename)));
String line = null;
while ((line = lnr.readLine()) != null)
{
    // Do you processing on line
}