【问题标题】:create bunch of files in particular directory在特定目录中创建一堆文件
【发布时间】:2018-07-17 00:59:09
【问题描述】:

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

无论我的程序在哪里运行,它应该创建一个"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
  }
}

【问题讨论】:

  • File#mkdirs 将是我的第一个建议
  • 我还可以考虑查看 File(String, String)File(File, String) 构造函数来构建路径
  • 我已经在使用File#mkdirs,但忘记在我的代码中提及。编辑了我的问题以添加缺少的部分。
  • 如果你创建一个目录A,你可能无法创建一个名为A的文件。您可能只想制作文件夹到文件,但不包括文件
  • @user1234 不!您必须单独创建目录,首先是 File parent = new File("files");parent.mkdirs(); 然后 File file = new File(parent, entry.getKey()); 以创建对要写入的文件的引用

标签: java file fileoutputstream bufferedwriter


【解决方案1】:

例如,您正在尝试创建文件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 ...

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 2021-08-31
    • 2013-04-15
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多