以下是我的maven项目的结构:
main和test文件夹在src文件夹下,java和resources文件夹在main文件夹下, 在资源文件夹中,有一个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也可以接受传入的参数。
答案 0 :(得分: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)
答案 1 :(得分:1)
您可以使用java.io.InputStream
(扩展java.io.InputStreamReader
)包裹java.io.Reader
并将其传递给CsvBeanReader
类。