将文本表加载到Java中

时间:2016-11-05 00:40:00

标签: java arrays

我正在尝试将文本文件中的数据加载到Java表中。第一行包含列标题,后跟实际数据。我已经把它全部加载并读取整个文本文件,但我是Java的新手并且正在努力继续。 我的问题是:加载表并使其可以按行而不是整个文件读取的最佳方法是什么?

public void readData() throws FileNotFoundException, IOException{
    BufferedReader in = new BufferedReader(new FileReader("cars.txt"));

    String line;
    while((line = in.readLine()) !=null){
        System.out.println(line);

    }

    in.close();
}

我的代码如下

{{1}}

2 个答案:

答案 0 :(得分:0)

我可能误解了你的问题 - 你是在问你如何处理代表单行的字符串,或者你在问你如何一次获得一行?

如果是后者,那么你只想删除循环。而是有一个方法读取单个行并返回表示行数据的字符串。如果没有更多行要读取,此方法可以根据您的偏好返回null或异常。然后你的程序的其余部分在那一行上运行 - 可能使用类似字符串标​​记器的东西将它分成组件部分。您还需要一种方法来打开文件并读取列标题。固定的列是否在问题域中始终相同,还是可以变化?

如果是前者,您可以使用CSV文件读取框架,或者您可以使用java StringTokenizer类根据文件中的分隔符将字符串拆分为多个部分。

答案 1 :(得分:0)

你正在逐行阅读文本,这就意味着你的应用程序文本模型如何编写文本就像它一样!如果你的文本文件写得像这样:

姓名----工作----国家

约翰---------司机-------纽约

Ammy -------工程师----加利福尼亚

当你使用此代码获取文本时:

while((line = in.readLine()) !=null){ System.out.println(line); }

这意味着在每一行的末尾传递一行,你会得到它像这个模型。如果你想逐字逐句地阅读它" StringTokinaizer" :

String text = "This is text, split by StringTokenizer";
    StringTokenizer stknz = new StringTokenizer(text );

    System.out.println("---- Split rows by space ------");
    while (stknz .hasMoreElements()) {
        System.out.println(stknz .nextElement());
    }