0

我是 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"

最好使用哪些库

谢谢

4

2 回答 2

0

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); 
于 2013-09-21T13:40:21.143 回答
0

我建议您将文件存储到自增长的 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);
于 2013-09-21T13:48:41.057 回答