如何检查是否没有其他文件存在

问题描述:

我从文件夹中加载一些文件的名称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...) 

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

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

的恕我直言不太笨拙的方法是简单地重复覆盖特定目录中的所有文件,并忽略那些名称与您的模式不匹配的文件(即除非您处理文件的顺序非常重要)。

+1

这是如何工作的?因为'.exists()'返回一个布尔值?编辑:我看到它应该如何工作,但你错过了')'。 – martijnn2008

+0

@ martijnn2008'exists'如果文件存在则返回true,是的。这依赖于Java中的赋值,如C和C++中的赋值,实际上是一个具有值而不是语句的表达式(具体而言,它具有赋值的值)。 – Cubic

你应该算号文件到文件夹

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

如果有目录 – user43968

你可以捕捉异常,并打破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++; 
} 
+4

它不”等文件(不PDF例如)不起作用看起来这样会有所帮助。当文件不存在时,构造函数不会引发异常(请参阅http://*.com/questions/1816673/how-do-i-check-if-a-file-exists-in-java) – Breeze

+0

啊,我不知道!我会编辑这个。 – JCollerton

+1

您的答案的第二部分已经由其他人给出,并且最初是错误的。 – martijnn2008

如果您有机会获得依赖的Apache下议院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()); 
} 
+0

这是真的......而且似乎我不能在通配符筛选器中使用正则表达式...... – GustavoCinque