【发布时间】:2014-06-13 08:44:27
【问题描述】:
我有 3 个 csv 文件如下:
- 作者文件的列:emailID |名字 |姓氏
- 包含列的书籍文件:标题 |伊斯本 |作者_电子邮件 |说明
- 带有文件列的杂志:标题 |伊斯本 |作者_电子邮件 |发布日期
我需要展示:
- 基于 ISBN 显示所有书籍和杂志
- 作者的所有书籍和杂志
- 所有书籍和杂志按标题
我现在使用BufferedReader:
String csvFileToRead = "csvFiles/authors.csv";
BufferedReader br = null;
String line = "";
String splitBy = ";";
try {
br = new BufferedReader(new FileReader(csvFileToRead));
while ((line = br.readLine()) != null) {
String[] book = line.split(splitBy);
System.out.println("BOOKS [Email Address= " + book[0] + " , firstname="
+ book[1] + " , lastname=" + book[2] + "]");
}
}
我对如何处理多个文件感到困惑。以下是我考虑过的方法:
-
改变
String csvFileToRead到一个字符串数组
String[] csvFileToRead = {"data/authors.csv", "data/books.csv", "data/magazines.csv"};然后每次将每个索引传递给一个返回所有行但被 DS 卡住的方法。我认为
ArrayList不够,因为我需要单独的数据。- 我应该使用二维数组吗?
- 是否需要在 DS 中读取和存储数据才能实现目标?
我应该为作者、书籍和杂志创建 3 个不同的类吗?
执行此操作的理想方法是什么?请建议。
【问题讨论】:
-
这些 CSV 文件是从哪里填充的?如果它来自数据库,最好从数据库中获取此信息。
-
这些文件是 ';'已分开并已提供。
-
您最终将不得不读取文件 3 次(每次读取一次)。我会创建 3 个类
Author、Book和Magazine来相应地表示。然后,可能会有一个帮助类来读取 csv 文件以生成合适的Author对象、Book对象和Magazine对象列表。