【问题标题】:How do I feed an InputStream into a CSVReader?如何将 InputStream 输入 CSVReader?
【发布时间】:2014-09-15 13:14:47
【问题描述】:

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

【问题讨论】:

标签: java csv inputstream


【解决方案1】:

使用

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

编辑回答评论

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

【讨论】:

  • 查看我编辑的答案。有时您可能会遇到编码问题,因此如果您有任何提及数据源的编码格式,例如“UTF-8”
【解决方案2】:
CSVReader reader = new CSVReader(new InputStreamReader(input, "UTF-8"));

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2013-05-11
    • 2015-06-23
    • 2016-08-29
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多