我是 java 和 csv 文件的新手。我想将 csv 文件存储在多维字符串数组中,但我不知道文件中的行数及其字段。
那么我怎样才能得到行数(例如行)
String[][] myStringArray = new String [X][5];
需要 X 的值
我也想写一个有标题的csv文件
ID,Time,Name,Comment
14,Mon Apr 06 23:48:45 PDT 2009,scotthamilton,"App"
最好使用哪些库
谢谢
我是 java 和 csv 文件的新手。我想将 csv 文件存储在多维字符串数组中,但我不知道文件中的行数及其字段。
那么我怎样才能得到行数(例如行)
String[][] myStringArray = new String [X][5];
需要 X 的值
我也想写一个有标题的csv文件
ID,Time,Name,Comment
14,Mon Apr 06 23:48:45 PDT 2009,scotthamilton,"App"
最好使用哪些库
谢谢
SupeCSV 是一个选项:http
: //supercsv.sourceforge.net/examples_writing.html CSVMapWriter 可能是编写标题并将列映射到标题的解决方案:
final String[] header = new String[] { "ID","Time", "Name", "Comment" };
CSVMapReader 或 CSVBeanReader 可用于读取具有任意行数的 CSV 文件,然后返回一个 Map,然后可以将其转换为二维字符串数组。
注意:请注意 CSV 分隔符有时是不同的(Excel 导出等),即使它被称为 Comma-Separated-Values 并且可能会导致解析问题。首选项设置如下:
mapReader = new CsvMapReader(new FileReader(path), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
我建议您将文件存储到自增长的 ArrayList 中,然后调用 List#toArray 方法将结果转换为多维数组。
例如,类似的东西:
List<List<String>> list = new ArrayList<List<String>>();
List<String> item;
list.add(item = new ArrayList<String>());
item.add("foo1");
item.add("bar1");
list.add(item = new ArrayList<String>());
item.add("foo2");
item.add("bar2");
List<String> [] arr = list.toArray(new ArrayList<String>(list.size()));
int maxSize = -1;
for(int a=0;a<arr.length;a++)
if(maxSize < arr[a].size())
maxSize = arr[a].size();
String [][] arr2 = new String[arr.length][maxSize];
for(int a=0;a<arr.length;a++)
arr2[a] = arr[a].toArray(new String[maxSize]);
System.out.println(arr2);