如何使用Jackson Library从java中的路径读取CSV文件。和解析使用 CsvSchema , ObjectReader , CsvMapper 。然后将其转换为使用杰克逊库的JSON对象。 pLease HELP。
private void testCsvRead() throws Exception
{
String FILE_NAME = "G://Read folder/output.csv";
System.out.println("read csv");
ClassLoader classLoader = getClass().getClassLoader();
//-------------*****I am getting error here*****------------///
File file = new File(classLoader.getResource(FILE_NAME).getFile());
<-------------**********------------/
CsvSchema schema = CsvSchema.builder().addColumn("parentCategoryCode").addColumn("code").addColumn("name").addColumn("description").build();
CsvMapper mapper = new CsvMapper();
ObjectReader oReader = mapper.readerFor(OfferTemplateCategory.class).with(schema);
try (Reader reader = new FileReader(file)) {
MappingIterator mi = oReader.readValues(reader);
while (mi.hasNext())
{
System.out.println(mi.next());
}
}
}
我在这一行上遇到错误(见上文)
File file = new File(classLoader.getResource(FILE_NAME).getFile());
这是错误---&gt;
java.lang.NullPointerException
at CSVtester.CsvTest.testCsvRead(CsvTest.java:39)
at CSVtester.CsvTest.main(CsvTest.java:26)
答案 0 :(得分:1)
此处可能的问题是classLoader.getResource(FILE_NAME)
返回null
。
当您使用文件的绝对路径时,您可能希望简化代码并只使用:
File file = new File("G://Read folder/output.csv");
您可以通过在exists()
对象上调用File
来验证您的文件是否存在。
注意强>
此处为Classloader#getResource
的{{3}},以及您案件null
的原因可能解释。