如何将InputStream传入CSVReader?

5
我希望将 InputStream 转换为 CSVReader。我使用以下代码:
CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE));

它正常工作,但如果我从类路径中获取文件,则此代码将不起作用。

如何将InputStream转换为CSVReader

这无法工作,因为InputStream不是字符串类型:

InputStream input = ImportCsv.class.getResourceAsStream("/dataUpload/staff.csv");
CSVReader reader = new CSVReader(new FileReader(input));

可能是CSVReader和InputStream的重复问题。 - Liam Sorsby
2个回答

12

使用

CSVReader reader = new CSVReader(new InputStreamReader(input));

编辑以回答评论

问题在于您没有想要的FileReader构造函数。请参阅FileReader API了解详情。但由于您需要将字节流转换为字符流,因此您将不得不使用InputStreamReader。为了更好的性能,您可以将其包装在BufferedReader中。


请查看我的编辑后的答案。有时您可能会遇到编码问题,因此如果您有任何问题,请提及数据源的编码格式,例如“UTF-8”。 - Niru

10
CSVReader reader = new CSVReader(new InputStreamReader(input, "UTF-8"));

在二进制字节/输入流和Unicode文本(Reader/String)之间的桥梁是InputStreamReader。如果文件不是本地文件,请指定字节/输入流的编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接