java - 无法使用 Java 删除文件夹

标签 java file file-io java-io

我试图删除一个只有文件但没有子文件夹的文件夹,但没有成功。

代码:

File rowFolder = new File(folderPath);
String[] files = rowFolder.list();
for (String file : files){
    File deleteFile = new File(file);
    System.out.println("deleting file -"+deleteFile.getName());
    deleteFile.delete();
}
System.out.println("deleting folder -"+rowFolder.getName());
rowFolder.delete();

输出:

deleting file -testing.pdf
deleting file -app_json.json
deleting file -photo.jpg
deleting folder -bundle_folder

该代码不会删除任何文件夹或任何文件。这是为什么?

最佳答案

由于多种原因,您可能会遇到删除失败的情况;该文件可能被文件系统锁定,您可能缺乏权限,或者可能被另一个进程打开等。

如果您使用的是 Java 7 或更高版本,则可以使用 javax.nio.* API;它比 legacy 更可靠、更一致。 java.io.File类:

Path fp = file.toPath();
Files.delete(fp);

如果你想捕获可能的异常:

try {
    Files.delete(path);
} catch (NoSuchFileException x) {
    System.err.format("%s: no such" + " file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
    System.err.format("%s not empty%n", path);
} catch (IOException x) {
    // File permission problems are caught here.
    System.err.println(x);
}

检查docs有关 Java 7 中 IO 的更多信息

关于java - 无法使用 Java 删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22085706/

相关文章:

c# - 从长路径自动创建目录

java - 解析sql数据库文件以在java中获取想要的列字段

java - 如何将 Apache Commons Daemon 与跨平台服务一起使用?

java - 类(class)集合

iphone - 文件属性 NSFileModificationDate 返回 iPad 应用程序中预期时间后 5 小时的时间

C++ 忽略空的第一行

.net - Windows服务无法复制到文件共享

java - 集合框架和数据结构

java - 无法解析多部分 Servlet 请求;嵌套异常是 org.apache.commons.fileupload.FileUploadException : Too many open files

javascript - 是否可以在上传前同时验证文件大小和扩展名?