【问题标题】:Creating files with names from ArrayList [duplicate]从 ArrayList 创建名称的文件 [重复]
【发布时间】:2018-03-25 08:33:13
【问题描述】:

我正在寻找一种方法来制作一堆空的 txt 文件,这些文件将以 Java 中的 ArrayList 的元素命名。

假设fList有“Apple”、“Banana”和“Cherry”,这段代码应该在项目目录下创建Apple.txt、Banana.txt和Cherry.txt。

不幸的是,它没有,我不明白为什么。我认为这是逻辑或语法错误。

public void ViewList() {
        for (String fruits : fList) {
            String fileName = fruits;
            File f = new File(appDir + fileName + ".txt");
            if (f.exists() && f.isFile()) {
                System.out.println("Success!");
            }
        }

你能帮我弄明白怎么回事吗?

【问题讨论】:

  • 您需要使用f.createNewFile()实际创建文件
  • 路径元素由/\ 分隔,具体取决于操作系统。您的代码appDir + fileName + ".txt" 将导致my/project/directoryapple.txt(注意/apple.txt 之前缺少)。要解决它,请使用new File(appDir, fileName + ".txt");
  • 老实说,我看不到重复的内容,但是,嘿,我知道什么。 Pshemo 对路径的解释以及 Sathishkumar Manogaran 对逻辑没有错的确认正是我所需要的。谢谢!
  • “老实说,我没有看到重复的内容”您的代码不包含负责在文件系统/磁盘上创建文件的部分。 new File(...) 只创建不一样的文件 object(object 包含信息 about 潜在文件,如路径,但不是文件本身)。重复问题的回答指出并解释了要在磁盘上创建实际文件,您需要调用f.createFile()

标签: java arraylist filenames


【解决方案1】:

除了几行之外,您的代码中的所有内容都是正确的。

for (String fruit : fList) {
    //String fileName = fruits;
    File file = new File(appDir + fruit + ".txt");

    //OR if appDir doesn't end with `/` or `\` use
    //File file = new File(appDir, fruit + ".txt"); 

    // Create the file
    if (file.createNewFile()) {
        System.out.println("File is created!");
    } else {
        System.out.println("File already exists.");
    }
}

您也可以参考此链接了解更多信息:

https://howtodoinjava.com/core-java/io/how-to-create-a-new-file-in-java/

注意:请注意,windows和unix系统的文件路径策略会有所不同。所以根据那个创建文件路径。

【讨论】:

  • 如果答案指向正确的文章,我不会说它没用。但这样的答案被认为质量较低,因为当链接资源将消失或更改其位置时,有变得无用的风险。因此,虽然链接作为附加资源很好,但它不能只是信息来源。
  • 我给你点了老兄。让我删除链接并给出正确答案:) Hodor :P
  • 我之前的评论被重播到其他评论,显然现在已删除。无论如何,没有必要删除链接。可以作为 附加 资源,或者如果答案是/包含引用作为其来源的信息。
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2014-09-11
  • 2019-03-09
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2016-02-08
相关资源
最近更新 更多