【发布时间】:2014-02-05 02:25:39
【问题描述】:
这是我的maven项目的结构:
main 和 test 文件夹在 src 文件夹下,java 和 resources 文件夹在 main 文件夹下, 在资源文件夹中,有一个可供读取的 csv 文件。
src
--main
|-- java
|-- resources
|-- test.csv
test
目前,我正在尝试使用 supercsv 库覆盖 test.csv 文件。
我知道public CsvMapWriter(Writer writer, CsvPreference preference) 方法对此很有帮助。
所以,我正在尝试使用 OutputStreamWriter,但是如何访问该文件,例如使用:
InputStreamReader reader = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("acacia_implexa.csv"));
mapReader = new CsvMapReader(reader, CsvPreference.STANDARD_PREFERENCE);
【问题讨论】:
-
您不能用 Java 覆盖类路径中的文件。这与 Maven 无关。
-
资源(通常)与您的类一起压缩到 JAR 文件中,并从文件系统文件中抽象出来。这是您只能使用 ClassLoader 将它们作为 InputStreams 读取的另一个原因。即使可以,这也是不好的做法。建议您从资源中读取初始 CSV,然后将更新后的版本保存到用户目录或其他逻辑位置。