Maven/Java 文件存储

问题描述 投票:0回答:1

我正在使用 Maven 开发一个项目,我有点困惑在这个程序中存储文件以供访问的正确方法是什么?

我已经考虑过使用 Maven 资源,但我对 Maven 的使用经验不是很丰富,而且似乎很难对此文件夹进行常规创建/更新/删除操作。

我目前正在使用 java.io 和 openCSV,但不知道这是否是推荐的解决方案。

这是我如何写入 csv 的示例:

public void writeCSV(){
    File file = new File("\\example.csv");

    String[] row1 = {"101","Joe","[email protected]"}
    String[] row2 = {"102","Ben","[email protected]"}
    String[] row3 = {"103","Jill","[email protected]"}

    String[][] csvRows = new String[3][];
    csvRows[0] = row1;
    csvRows[1] = row2;
    csvRows[2] = row3;

    String[] headers = {"id", "name","email"};
    csvOut(headers,csvRows,file);
}

private boolean csvOut(String[] headers, String[][] rows, File file){
    FileWriter fw = new FileWriter(dest);
    CSVWriter cw = new CSVWriter(fw);

    cw.writeNext(headers);

    for(String[] row : rows){
        cw.writeNext(row);
    }
    cw.close();
    fw.close();
}

这是我删除部分数据文件的方法:

public void deleteSaveData(){
        String workingDir = System.getProperty("user.dir");
        File datDir = new File(workingDir+"\\data");
        File csvDir = new File(workingDir+"\\csv");
        for(File dat: datDir.listFiles((File f) -> f.getName().endsWith("dat"))){
            dat.delete();
        }
        for(File csv: csvDir.listFiles((File f) -> f.getName().endsWith("csv"))){
            csv.delete();
        }
    }

这似乎现在有效,但我不知道一旦作为 jar 导出到其他系统是否会中断。是否建议使用 Maven 方法重写它,或者也许有其他更好的标准?

欢迎任何建议!

java maven file file-io
1个回答
0
投票

默认情况下,Maven、Gradle 等构建工具或常见的 Java 实践会将所有文件从

src/main/resources
复制到
target/classes
build/classes
的根目录。

因此,当我们尝试从

src/main/resources
读取文件时,我们从项目类路径的根目录读取该文件。

© www.soinside.com 2019 - 2024. All rights reserved.