2016-11-18 62 views
2

我将如何实现BufferedReader读取具有多个字段的文件?我知道br逐行读取,但是文件的格式让我很难理解,因为每一行的长度都不相同。这是一个文本格式的例子。如何让bufferedReader在每次发生时解释4个变量行?那么之后进行的两条可变线?使用Bufferedreader读取多字段文本文件

var0// number of test cases 

var1 var2 var3 var4 

num1 num2 

num3 num4 

... ... 

... ... 

var6 var7 var8 var9 

... ... 

... ... 

... 

... 

这里是我的基本的BufferedReader的代码读取文件

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Scanner; 

public class FileHandling { 

    public static void main(String[ ] args) { 

     Scanner scanner = new Scanner(System.in); 
     BufferedReader br = null; 
     String line; 

     //System.out.println("New.txt"); 

     try{ 
      br = new BufferedReader(new FileReader("Part1.txt")); 
     } catch (FileNotFoundException fileex) { 
      System.out.println(fileex.getMessage() + "This File Was Not Found"); 
      System.exit(0); 
     } 

     //Read the lines 

     try { 
      while((line = br.readLine()) != null){ 
      System.out.println(line); 
    } 
     } catch (IOException ioex) { 
      System.out.println(ioex.getMessage() + "Error Reading File"); 
     }finally { 
      System.exit(0); 
     } 

} 

有几件事情要注意。我了解这个网站及其用途。我通过本网站上的其他类似问题彻底研究了数小时。我已经尝试了可汗学院,YouTube,我能想到的一切来解决我的问题。我不想找人为我做我的工作。我只是一个失落的CS学生,正在寻找正确方向的提示。我的Java技能很弱,所以也许我只是没有以别人能解释得更好的方式来解决问题。我很感激你们都可以给我的任何建议。谢谢。

+3

您正在寻找'String.split'。在空间分割线。 –

+2

或者使用'java.util.Scanner'。 – EJP

+0

从@AndyTurner的说法来看,你想使用'String.split('')',这将把每一行和一个空格分开,然后你可以将它存储在一个数组中。这里有一个例子,关于如何使用它: https://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java – user123

回答

0

对这些注释进一步扩展,这段代码会将每行分割为一个空格字符,并将结果存储在一个数组中。从那里,你可以操纵数据,例如,如果你输入的是:

John Goodman 
Kate Beckinsale 
George Foreman 

你可以设置一个变量String firstName = array[0];String lastName = array[1];

这里,你将需要从你的改变。例如,代码

try { 
    while((line = br.readLine()) != null){ 
    String[] splitLine = line.split(' '); 
    for(String str : splitLine) { 
     // Do something with each string 
     System.out.println(str); 
    } 
}