如何将InputStream提供给CSVReader?

use*_*731 2 java csv inputstream

我想转换InputStreamCSVReader.当我使用下面的代码时

CSVReader reader = new CSVReader(new FileReader(ADDRESS_FILE));
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是,如果我从类路径中获取文件,那么此代码不起作用.

我如何将a转换InputStreamCSVReader

这不起作用原因InputStream不是字符串类型:

InputStream input = ImportCsv.class.getResourceAsStream("/dataUpload/staff.csv");
CSVReader reader = new CSVReader(new FileReader(input));
Run Code Online (Sandbox Code Playgroud)

Joo*_*gen 8

CSVReader reader = new CSVReader(new InputStreamReader(input, "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

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


Nir*_*iru 6

使用

CSVReader reader = new CSVReader(new InputStreamReader(input));
Run Code Online (Sandbox Code Playgroud)

编辑以回答评论

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