1

这是我的maven项目的结构:

main 和 test 文件夹在 src 文件夹下,java 和 resources 文件夹在 main 文件夹下,在 resources 文件夹中,有一个 csv 文件可供读取。

src  
  --main  
    |-- java  
    |-- resources  
           |-- test.csv
test  

据我所知,
InputStream file = ClassLoader.getSystemResourceAsStream("test.csv");
可以在资源文件中获取文件内容。

但是,为了基于 supercsv 库读取和解析 csv 文件,我必须使用以下代码,但 CsvBeanReader 方法不接受 InputStream。

beanReader = new CsvBeanReader(new FileReader(CSV_FILENAME), CsvPreference.STANDARD_PREFERENCE);   

那么我怎样才能不仅从基于maven结构的资源文件夹中获取文件,而且CsvBeanReader也可以接受传入的参数。

4

2 回答 2

2

尝试使用InputStreamReader而不是FileReader.

这是可能的,因为 的构造函数CsvBeanReader接受抽象类Reader

CsvBeanReader(Reader reader, CsvPreference preferences)
//Constructs a new CsvBeanReader with the supplied Reader and CSV preferences.

您可以InputStreamReader使用InputStream您获得的构建:

InputStreamReader(InputStream in)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)
InputStreamReader(InputStream in, String charsetName)
于 2014-02-02T03:31:13.193 回答
1

java.io.InputStream您可以用 a java.io.InputStreamReader(which extends )包装并将其java.io.Reader传递给CsvBeanReader类。

于 2014-02-02T03:31:40.653 回答