与this question非常相似,我正在尝试更新TableView
中的JavaFX
。我使用DataFX
采用了解决方案。
我的代码:
File file = new File(path);
if(file.exists() && file.canRead()) {
DataSourceReader dsr1 = new FileSource(file);
String[] columnsArray = {"firstName", "lastName"};
CSVDataSource ds1 = new CSVDataSource(dsr1, columnsArray);
System.out.println("CSV : " + ds1.getData().size()); // outputs 0
//Below is commented out since I don't have data : source of the error
//tblAthleteList.setItems(ds1.getData());
//tblAthleteList.getColumns().addAll(ds1.getColumns());
}
以下是我的测试.csv
文件的视图:
firstName, lastName
first, last
test, tester
我正在使用JavaFX 2
,DataFX 1.0
并构建e(fx)clipse
稍微更改了代码以使用FileSource(File f)
构造函数来查看是否会发生任何变化。结果我试图从CSVDataSource打印一些东西,我总是得到一个NullPointerException
。因此,假设CSVDataSource
没有得到任何数据。从示例中我可以发现这是正确完成的。我可以使用简单的BufferedReader
和循环来读取文件。
编辑了这个问题......我现在正在指出错误是因为没有数据从CSVDataSource
文件中提取到.csv
。第ds1.getData().size()
行返回0
。发布了一个我正在使用的非常简单的.csv
文件。 EOL
由CR
+ LF
组成,并在Notepad++
中编辑(无Excel
多余字符)。
答案 0 :(得分:1)
确保columnsArray
中的列名与CSV文件中的列名完全相同(区分大小写)。
当我将列名称year
放在代码中但在我的csv文件中Year
时,我得到了类似的异常。
根据问题编辑进行更新:
删除文件中,
和lastName
之间的空格,或将" lastName"
作为列名放在代码中:)