如何将InputStream提供给CSVReader?

时间:2014-09-15 13:14:47

标签: java csv inputstream

我想将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));

2 个答案:

答案 0 :(得分:7)

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

二进制字节/ InputStream和unicode文本(Reader / String)之间的桥接是InputStreamReader。如果文件不是本地文件,请指定bytes / InputStream的编码。

答案 1 :(得分:4)

使用

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

编辑以回答评论

问题是因为你没有任何FileReader的构造函数。有关详细信息,请参阅FileReader API。但是,由于您必须将字节流转换为字符流,因此您必须使用InputStreamReader。为了获得更好的性能,您可以使用BufferedReader

进行包装