【问题标题】:How to use classpath to specify a file location?如何使用类路径指定文件位置?
【发布时间】:2014-02-02 02:42:46
【问题描述】:

这是我的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可以接受传入的参数。

【问题讨论】:

    标签: java csv supercsv


    【解决方案1】:

    尝试使用InputStreamReader 而不是FileReader

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

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

    您可以使用已获得的InputStream 构造InputStreamReader

    InputStreamReader(InputStream in)
    InputStreamReader(InputStream in, Charset cs)
    InputStreamReader(InputStream in, CharsetDecoder dec)
    InputStreamReader(InputStream in, String charsetName)
    

    【讨论】:

      【解决方案2】:

      您可以用java.io.InputStreamReader(扩展java.io.Reader)包装java.io.InputStream,并将其传递给CsvBeanReader 类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-08
        • 2023-01-23
        • 1970-01-01
        • 2018-08-06
        • 2011-03-21
        • 1970-01-01
        • 2014-10-19
        • 2014-07-06
        相关资源
        最近更新 更多