Java在当前包文件夹中创建一个文件夹

时间:2013-07-14 02:12:30

标签: java

在我的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是我想在当前包目录中创建的文件夹。


更新

感谢大家回答我的问题。我不是很有经验,所以犯了很多错误。

我正在生成一堆markdown文件,这些文件可以按原样使用,稍后会在我的应用程序中进一步处理,即合并为1个单独的文件,并翻译成HTML。我的应用程序存在于项目中,文件结构如下:

root
  |--other parts
  |--definitions
  |    |--definition
  |    |--java
  |    |    |--validator
  |    |    |--docGenerator
  |    |--pom.xml
  |--pom.xml

docGenerator 是我的项目。我应该把它放在哪里:

  • 中间生成的文件,我想保留
  • 我将生成,使用和删除的临时文件
  • 最终输出文件
  • 我的程序读取和使用的资源文件

非常感谢大家!

2 个答案:

答案 0 :(得分:1)

假设您当前的路径位于应用程序文件夹(包文件夹所在的位置)内,并且您的类文件不在jar中,则可以执行此操作。

String OUTPUT_DIR = this.getClass().getCanonicalName().replace(".","/");
OUTPUT_DIR = OUTPUT_DIR.substring(0,OUTPUT_DIR.lastindexOf('/'));

答案 1 :(得分:0)

从您的问题中我们想要做的事情是非常不清楚的。但是,我认为这就是你要求的:

    ...
    File outputDir = new File(OUTPUT_DIR);
    File outputFile = new File(outputDir, planNames.get(i) + ".md");
    bw = new BufferedWriter(new FileWriter(outputFile));
    ...

以上内容在目录planNames.get(i) + ".md"中打开一个文件(名为OUTPUT_DIR)。打开文件以写为文本文件。如果它不存在则会被创建,如果它存在则被截断。

这假设输出目录已存在,OUTPUT_DIRString,其值是目录的可解析路径名。


我还应该指出,如果您的应用程序甚至需要在IDE之外运行,那么将文件写入IDE中的项目源代码树是行不通的。 (这在IDE中也很奇怪......除非你生成 Java源代码。)

从这个意义上说,你可能要求错误的东西;即没有意义的事情。如果你告诉我们你在这里尝试做什么,我们可以建议更有意义的替代方案。

相关问题