我想阅读以下格式的文本文件:
title1, 2010, isbn, 121212
author1, firstname, lastname
author2, firstname, lastname
title2, 1999, isbn, 565656
author1, firstname, lastname
title3, 2001, isbn, 898989
author1, firstname, lastname
author2, firstname, lastname
author3, firstname, lastname
使用像Java这样的面向对象编程语言加载对象中每个数据的最佳方法是什么?
我是否必须创建一个属性为title,year,isbn和这样的作者的类:
public class Book {
private String title;
private String year;
private String isbn;
private List<String> author; // A list because I don't know how many authors wrote the book
}
或倍数类,每个实体一个:
public class Book {
private String title;
private String year;
private String isbn;
}
public class Author {
private String firstname;
private String lastname;
}
感谢。
答案 0 :(得分:0)
以下是您需要整理解决方案的所有部分。
要逐行阅读文件,请使用BufferedReader:
BufferedReader reader = new BufferedReader( new FileReader( filename ) );
现在你可以通过调用来读取一行,例如
String line = reader.readLine();
要将行拆分为逗号分隔元素,可以使用String.split。例如。
String[] token = line.split( "," );
您应该能够使用这些工具和一些创造力来组合解决方案:)
答案 1 :(得分:0)
您的“格式化”文件是否真的格式化了?您将遇到问题,因为文件中有两种类型的对象。从解析器的角度来看,它们无法识别。这意味着您将需要自定义逻辑来分析您解析的内容,然后需要确定它是什么对象以及如何存储它。
一种方法可能是http://opencsv.sourceforge.net/ 你的文件看起来像csv文件,可以解析。
如果您可以控制格式化数据,则应对其进行更改以使其更清晰。你有几个选择,例如:
分为2个CSV文件 您可以拥有1个书籍文件,另一个文件可供作者使用。上面的opencsv lib将自动将您的文件解析为Java对象,供您使用。
为您的文件创建json格式
,而不是像上面那样格式化,你可以使用:
{
"title" : "mytitle",
"year": 2001,
"isbn" : 1231312,
"authors" : [ "author1", "author2" ]
} ...
这种格式将使您能够使用GSON或Jackson对象映射器来解析这些文件,此时它变得非常容易。谷歌将有很多关于如何使用它的例子。
希望有所帮助,
阿图尔