Java 如何在多维字符串数组中存储csv文件

Java 如何在多维字符串数组中存储csv文件,java,arrays,csv,multidimensional-array,Java,Arrays,Csv,Multidimensional Array,我不熟悉java和csv文件。 我想将csv文件存储在多维字符串数组中,但我不知道文件及其字段中的行数 那么,如何获得行数(例如行数) 需要X的值 此外,我想写一个csv文件有头 ID,Time,Name,Comment 14,Mon Apr 06 23:48:45 PDT 2009,scotthamilton,"App" 哪些库最适合使用 谢谢SupeCSV是一个选项: CSVMapWriter可能是一种用于写入标题并将列映射到标题的解决方案: final String[] head

我不熟悉java和csv文件。 我想将csv文件存储在多维字符串数组中,但我不知道文件及其字段中的行数

那么,如何获得行数(例如行数)

需要X的值

此外,我想写一个csv文件有头

ID,Time,Name,Comment
14,Mon Apr 06 23:48:45 PDT 2009,scotthamilton,"App"
哪些库最适合使用

谢谢

SupeCSV是一个选项:
CSVMapWriter可能是一种用于写入标题并将列映射到标题的解决方案:

    final String[] header = new String[] { "ID","Time", "Name", "Comment" };
CSVMapReader或CSVBeanReader可用于读取具有任意行数的CSV文件,然后返回可以转换为二维字符串数组的映射

注意:CSV分隔符有时是不同的(Excel导出等),尽管它被称为逗号分隔值,可能会导致解析问题。首选项设置如下:

   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);
List List=new ArrayList();
清单项目;
add(item=newarraylist());
项目。添加(“foo1”);
添加项目(“bar1”);
add(item=newarraylist());
项目。添加(“foo2”);
添加项目(“bar2”);
List[]arr=List.toArray(新的ArrayList(List.size());
int maxSize=-1;
对于(int a=0;a您可能希望看到
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);