【问题标题】:How do I check if no other files exist [duplicate]如何检查是否不存在其他文件[重复]
【发布时间】:2016-06-12 09:56:16
【问题描述】:

我从名称为file 1.pdffile 2.pdf 等的文件夹中加载了一些文件 我想将它们全部加载到我的程序中。如果我更新它们的总数,我会这样做:

for(int i=1; i<=100; i++){
   File pdfFile = new File("file "+i+".pdf");
   //...
}

但我不知道总数..如果没有其他文件,会是什么条件,然后退出?

do{
      File pdfFile = new File("file "+i+".pdf");
      //...
}while(//there are files...)

【问题讨论】:

    标签: java file


    【解决方案1】:

    有两种方法 - 你可以简单地增加你的计数器,直到你得到一个不存在的文件,即

    int i = 1;
    File file;
    while((file = new File("file "+i+".pdf")).exists()) {
        // do whatever
        ++i;
    }
    

    恕我直言不那么笨拙的方法是简单地遍历特定目录中的所有文件,并忽略那些名称与您的模式不匹配的文件(也就是说,除非您处理文件的顺序很重要)。

    【讨论】:

    • 这是如何工作的?因为.exists() 返回一个布尔值?编辑:啊,我知道它应该如何工作了,但是您缺少)
    • @martijnn2008 exists 如果文件存在则返回 true,是的。这依赖于这样一个事实,即 Java 中的赋值,就像在 C 和 C++ 中一样,实际上是一个带有值而不是语句的表达式(具体来说,它具有被赋值的值)。
    【解决方案2】:

    如果您有权访问依赖项 Apache Commons IO,您的代码将如下所示:

    File dir = new File("C:\\Users\\your.directory\\");
    FileFilter fileFilter = new WildcardFileFilter("file *.pdf");
    File[] files = dir.listFiles(fileFilter);
    for(File file : files){
        System.out.println(file.getAbsolutePath());
    }
    

    【讨论】:

    【解决方案3】:

    您可以捕获异常并中断 while 循环。原来我是这样回答的:

    boolean success = true;
    int i = 0;
    
    while(success){
    
        i = i + 1;
    
        try{
            File pdfFile = new File("file " + i + ".pdf");
        } catch(FileNotFoundException ex){
            success = false;
        }
    }
    

    但有人告诉我构造函数不会抛出异常,所以这行不通。因此,您最好使用下面的答案,正如另一位用户 (@cubic) 所建议的那样。

    int i = 0;
    File file;
    
    while((file = new File("file " + i + ".pdf")).exists()){
        // something with file
        i++;
    }
    

    【讨论】:

    • 这似乎没有帮助。当文件不存在时构造函数不会抛出异常(参见stackoverflow.com/questions/1816673/…
    • 啊,我不知道!我会编辑这个。
    • 你第二部分的答案已经被别人给了,一开始是错的。
    • 编辑解释了为什么我的方法不起作用(并接受了您的编辑并感谢正确的答案)。
    【解决方案4】:

    你应该计算文件夹中的文件数

    new File(<directory path>).listFiles().length
    

    【讨论】:

    • 如果目录中有其他文件(例如不是pdf)则不起作用
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2012-05-26
    • 2019-08-05
    相关资源
    最近更新 更多