在特定目录

时间:2018-02-06 21:02:11

标签: java file fileoutputstream bufferedwriter

我正在尝试在特定目录中创建大量文件。如果目录不存在,那么它应该创建目录并在其中创建一堆文件。

如果我的程序正在运行,它应该创建一个"files"目录,如果它不存在,并且在这个"files"文件夹中,我想在其中创建一堆文件。

我有下面的代码,但看起来它正在创建一堆文件夹,而不是一个文件夹和该文件夹中的所有文件。我做错了什么?

for (Entry<String, String> entry : tasks.entrySet()) {
  // looks like something is wrong here but can't figure out what wrong I am doing?
  File file = new File("files/" + entry.getKey());
  file.mkdirs();
  try (BufferedWriter writer =
      new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),
          StandardCharsets.UTF_8))) {
    writer.write(entry.getValue());
  } catch (IOException ex) {
    // log error
  }
}

1 个答案:

答案 0 :(得分:0)

例如,您正在尝试创建文件C:\Stuff\Things\other.txt

使用您当前的代码,您可以创建文件夹C:\Stuff\Things\other.txt\

当您尝试写入文件moo.txt时,它不能,因为您在其中放置了一个文件夹...\other.txt\

相反,在编写文件C:\Stuff\Things\

之前,最多可创建文件夹,但不包括文件名。
File file = new File(...);
file.getParentFile().mkdirs();
try(BufferedWriter ...