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