从 object 中的文本文件加载格式化数据
Loading formatted data from text file in an object
我想阅读以下格式的文本文件:
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 等 object-oriented 编程语言加载 object(s) 中每个数据的最佳方法是什么?
我是否必须创建一个 class 属性为标题、年份、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
}
或多个 class,每个实体一个:
public class Book {
private String title;
private String year;
private String isbn;
}
public class Author {
private String firstname;
private String lastname;
}
谢谢。
这里是你需要的所有部分来组合一个解决方案。
要逐行读取文件,请使用 BufferedReader:
BufferedReader reader = new BufferedReader( new FileReader( filename ) );
现在你可以通过调用读取一行,例如
String line = reader.readLine();
要将行拆分为逗号分隔的元素,您可以使用 String.split。例如。
String[] token = line.split( "," );
您应该能够使用这些工具和一些创造力来组合解决方案:)
你的"formatted"文件真的格式化了吗?你会 运行 遇到问题,因为你的文件中有两种类型的对象。从解析器的角度来看,它们是不可识别的。这意味着您将需要自定义逻辑来分析您解析的内容,然后需要决定它是什么对象以及如何存储它。
一种方法可以是 http://opencsv.sourceforge.net/
你的文件对我来说看起来像一个 csv 文件,可以这样解析。
如果您可以控制您的格式化数据,您应该更改它以使其更清楚它的用途。您将有几个选项,例如:
分成2个CSV文件
您可以有 1 个文件用于书籍,另一个文件用于作者。然后,上面的 opencsv 库会自动将您的文件解析为您可以使用的 Java 个对象。
为您的文件创建 json 格式
例如,您可以使用:
而不是像上面那样格式化
{
"title" : "mytitle",
"year": 2001,
"isbn" : 1231312,
"authors" : [ "author1", "author2" ]
} ...
这种格式将使您能够使用 GSON 或 Jackson 对象映射器来解析这些文件,此时它变得非常容易。 Google 将提供大量有关如何使用它的示例。
希望对您有所帮助,
阿图尔
我想阅读以下格式的文本文件:
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 等 object-oriented 编程语言加载 object(s) 中每个数据的最佳方法是什么?
我是否必须创建一个 class 属性为标题、年份、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
}
或多个 class,每个实体一个:
public class Book {
private String title;
private String year;
private String isbn;
}
public class Author {
private String firstname;
private String lastname;
}
谢谢。
这里是你需要的所有部分来组合一个解决方案。
要逐行读取文件,请使用 BufferedReader:
BufferedReader reader = new BufferedReader( new FileReader( filename ) );
现在你可以通过调用读取一行,例如
String line = reader.readLine();
要将行拆分为逗号分隔的元素,您可以使用 String.split。例如。
String[] token = line.split( "," );
您应该能够使用这些工具和一些创造力来组合解决方案:)
你的"formatted"文件真的格式化了吗?你会 运行 遇到问题,因为你的文件中有两种类型的对象。从解析器的角度来看,它们是不可识别的。这意味着您将需要自定义逻辑来分析您解析的内容,然后需要决定它是什么对象以及如何存储它。
一种方法可以是 http://opencsv.sourceforge.net/ 你的文件对我来说看起来像一个 csv 文件,可以这样解析。
如果您可以控制您的格式化数据,您应该更改它以使其更清楚它的用途。您将有几个选项,例如:
分成2个CSV文件 您可以有 1 个文件用于书籍,另一个文件用于作者。然后,上面的 opencsv 库会自动将您的文件解析为您可以使用的 Java 个对象。
为您的文件创建 json 格式
例如,您可以使用:
而不是像上面那样格式化{
"title" : "mytitle",
"year": 2001,
"isbn" : 1231312,
"authors" : [ "author1", "author2" ]
} ...
这种格式将使您能够使用 GSON 或 Jackson 对象映射器来解析这些文件,此时它变得非常容易。 Google 将提供大量有关如何使用它的示例。
希望对您有所帮助,
阿图尔