我是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"
最好使用哪些库
由于
答案 0 :(得分:0)
SupeCSV是一个选项:http://supercsv.sourceforge.net/examples_writing.html
CSVMapWriter可能是编写标题并将列映射到标题的解决方案:
final String[] header = new String[] { "ID","Time", "Name", "Comment" };
CSVMapReader或CSVBeanReader可用于读取具有任意行数的CSV文件,然后返回一个Map,然后可将其转换为二维String数组。
注意:请注意,CSV分隔符有时会有所不同(Excel导出等),即使它被称为逗号分隔值,也可能导致解析问题。首选项设置如下:
mapReader = new CsvMapReader(new FileReader(path), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
答案 1 :(得分: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);