[英]Java create a folder in current package folder
在我的Java程序中,我想将文件写入当前程序包内的文件夹中。 如果此文件夹不存在,我将创建它。
我如何用相对路径引用这个可能不存在的文件夹,这样,如果我移动软件包时,就不必手动修复路径了?
private void writeFamilyPerFile(String name, ArrayList<String> planNames) {
File file;
File folder = new File(OUTPUT_DIR + "/temp/");
BufferedWriter bw = null;
try {
if(!folder.exists()) {
folder.mkdir();
}
file = new File(folder + name + ".md");
file.createNewFile();
bw = new BufferedWriter(planNames);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ignore) {
}
}
}
}
OUTPUT_DIR
是我当前软件包的路径,而folder
是我要在当前软件包目录中创建的文件夹。
UPDATE
感谢大家回答我的问题。 我不是很有经验,所以会犯很多错误。
我正在生成一堆markdown文件,这些文件可以按原样使用,稍后将在我的应用程序中进行进一步处理,即合并为1个单个文件,然后转换为HTML。 我的应用程序位于项目中,文件结构如下:
root
|--other parts
|--definitions
| |--definition
| |--java
| | |--validator
| | |--docGenerator
| |--pom.xml
|--pom.xml
docGenerator是我的项目。 我应该放在哪里:
非常感谢大家!
假设您当前的路径在application文件夹(包文件夹在其中)内,并且您的类文件不在jar中,则可以执行此操作。
String OUTPUT_DIR = this.getClass().getCanonicalName().replace(".","/");
OUTPUT_DIR = OUTPUT_DIR.substring(0,OUTPUT_DIR.lastindexOf('/'));
从您的问题中还不清楚您要做什么。 但是,我认为这是您要的:
...
File outputDir = new File(OUTPUT_DIR);
File outputFile = new File(outputDir, planNames.get(i) + ".md");
bw = new BufferedWriter(new FileWriter(outputFile));
...
上面的代码在目录OUTPUT_DIR
打开一个文件(名为planNames.get(i) + ".md"
)。 该文件被打开以作为文本文件写入。 如果尚不存在,将创建它,如果存在,则将其截断。
这假定输出目录已经存在,并且OUTPUT_DIR
是一个String
其值是该目录的可解析路径名。
我还应该指出,即使您的应用程序甚至需要在IDE外部运行,也无法将文件写入IDE中的项目源树中。 (这在IDE中也很奇怪……除非您正在生成Java源代码 。)
从这个意义上讲,您可能是在要求错误的东西; 即没有意义的东西。 如果您告诉我们您实际上在做什么,我们可能会建议更有意义的替代方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.