java - 删除文件(奇怪的扩展名)

标签 java file

当我想使用 Java 删除存储库中的文件时遇到问题。我想做的是检查存储库是否存在,如果存在我想删除它包含的所有文件。 这是我的代码:

File f = new File(this.pathToFolder); 

if (f.exists() && f.isDirectory()) {
  for (int i = 0; i < f.listFiles().length ; i++) {    
    f.listFiles()[i].delete(); 
  }
}     
else {
  f.mkdir();
}

但问题是有时它不会删除文件。我的猜测是因为我要删除的文件有一个奇怪的标题,例如:1.20.36579.55485875 它们是我下载的文件,我无法选择它们的名称。

现在我尝试了类似的东西:

File f = new File(this.pathToFolder); 

if (f.exists() && f.isDirectory()) {
  int i = 0;
  while (f.listFiles().length != 0) {
    boolean remove  = f.listFiles()[i].delete(); 
    System.out.println(remove);
  }
} 
else {
  f.mkdir();
} 

在控制台中,我得到了很多“假”(大约 15 个),然后最终得到了一个真。

我不明白为什么会这样。也许你们中的一些人会有想法。

谢谢, 瓦茨拉夫

最佳答案

您的代码的问题是您在删除文件时修改了 listFiles() 数组,因此数组的大小在每次循环中都在缩小。

试试这个

for (File file : f.listFiles()) {
    file.delete();
}

关于java - 删除文件(奇怪的扩展名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50556091/

相关文章:

file - NSData(文件内容 : "someexistingfile") returns nil in Playground

python - 通过在 python 中获取用户输入来编辑文件?

java - 组件上的小窗口

java - 如何在一个 Activity 中切换两个 fragment ?

java - 使用 HttpComponents 基于客户端证书的身份验证

windows - Powershell Select-String 之后,Windows 上的 txt 文件更大,行数更少

c - 如何将多个结构数组传递给 C 中的单个函数

java - 从maven项目中的相对路径读取文件

java - 将多个 java 程序集成为一个程序

如果路径包含非拉丁字符,则 Mac OS FileNotFound 上的 Java