我正在尝试将文本文件中的数据加载到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}}
答案 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());
}