如何在java中逐行读取文件中的输入?

时间:2011-01-19 07:29:58

标签: java file-io

好的,我知道这是一个非常新秀的问题,但我在网上浏览了很多,但我无法找到问题的答案:

如何在java中逐行读取文件中的输入?

假设每行都有整数的文件输入,例如:

1
2
3
4
5

以下是我尝试使用的代码片段:

public static void main(File fromFile) {

  BufferedReader reader = new BufferedReader(new FileReader(fromFile));

  int x, y;

  //initialize
  x = Integer.parseInt(reader.readLine().trim());
  y = Integer.parseInt(reader.readLine().trim());

}

据推测,这将读取前两行并将它们存储为x和y中的整数。因此,在示例中,x = 1,y = 2。

这是一个问题,我不知道为什么。

3 个答案:

答案 0 :(得分:2)

请检查您的main method()。它应该像这些

public static void main(String... args) {
}

public static void main(String[] args) {
}

然后阅读:

 BufferedReader reader = new BufferedReader(new FileReader(fromFile));

 String line;
 while( (line = reader.readLine()) != null){
        int i = Integer.parseInt(line);
 }

答案 1 :(得分:2)

 public static void main(String[] args) {
        FileInputStream fstream;
        DataInputStream in = null;
        try {
            // Open the file that is the first 
            // command line parameter
            fstream = new FileInputStream("textfile.txt");
            // Get the object of DataInputStream
            in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strLine;
            int x = Integer.parseInt(br.readLine());
            int y = Integer.parseInt(br.readLine());

            //Close the input stream

        } catch (Exception e) {//Catch exception if any
            System.err.println("Error: " + e.getMessage());
        } finally {
            try {
                in.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }

答案 2 :(得分:0)

我们通常使用while循环,readLine方法告诉是否到达文件末尾:

 List<String> lines = new ArrayList<String>();
 while ((String line = reader.readLine()) != null)
   lines.add(line);

现在我们有一个集合(列表),它将文件中的所有行都保存为单独的字符串。


要将内容读作整数,只需定义一个整数集合并在阅读时解析:

 List<Integer> lines = new ArrayList<Integer>();
 while ((String line = reader.readLine()) != null) {
   try {
     lines.add(Integer.parseInt(line.trim()));
   } catch (NumberFormatException eaten) {
     // this happens if the content is not parseable (empty line, text, ..)
     // we simply ignore those lines
   }
 }