如何检查是不是不存在其他文件[重复]

Posted

技术标签:

【中文标题】如何检查是不是不存在其他文件[重复]【英文标题】: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...)

【问题讨论】:

【参考方案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());

【讨论】:

关闭,但不完全。他的问题让他遍历“文件.pdf”,而您的问题将遍历“file .pdf”此外,他似乎希望他的数字是连续的。当然,如果实际意图只是遍历目录中的所有 pdf,这是有效的。 那是真的...而且似乎我不能在通配符过滤器中使用正则表达式...【参考方案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++;

【讨论】:

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

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

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

【讨论】:

如果目录中有其他文件(例如不是pdf)则不起作用

以上是关于如何检查是不是不存在其他文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查文件夹中是不是存在文件[重复]

检查目录是不是存在和权限[重复]

如何检查python中是不是存在文件? [复制]

检查目录是不是存在并计算与其中模式匹配的文件[重复]

如何检查变量是不是存在[重复]

检查linux脚本中是不是存在文件[重复]