我正在使用 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 方法重写它,或者也许有其他更好的标准?
欢迎任何建议!
默认情况下,Maven、Gradle 等构建工具或常见的 Java 实践会将所有文件从
src/main/resources
复制到 target/classes
或 build/classes
的根目录。
因此,当我们尝试从
src/main/resources
读取文件时,我们从项目类路径的根目录读取该文件。