java 删除 文件_Java删除文件和目录

在这一小节中将学习如何在Java中删除文件和目录,在上面我们学习了如何在java中创建文件。

1. Java删除文件Java File delete()方法可用于删除文件或空目录/文件夹。如果文件被删除,delete()方法返回true,如果文件不存在则返回false。

如果删除目录,delete()方法检查目录是否为空。如果目录为空,则删除目录,否则delete()方法不会执行任何操作并返回false。所以在这种情况下,必须递归删除所有文件,然后再删除空目录。

删除非空目录的另一种方法是使用Files.walkFileTree()方法。在这种方法中,可以逐个处理所有文件,并在单个文件对象上调用delete方法。

Java删除文件示例

//

package com.journaldev.files;

import java.io.File;

public class DeleteFileJava {

/**

* 此类显示如何在Java中删除文件

* @param args

*/

public static void main(String[] args) {

// 带路径的文件名

File file = new File("tmp/tmp2/file.txt");

if(file.delete()){

System.out.println("tmp/tmp2/file.txt File deleted");

}else System.out.println("File tmp/tmp2/file.txt doesn't exist");

// 只提供文件名称

file = new File("file.txt");

if(file.delete()){

System.out.println("file.txt File deleted from Project root directory");

}else System.out.println("File file.txt doesn't exist in the project root directory");

//relative path

file = new File("temp/file.txt");

if(file.delete()){

System.out.println("temp/file.txt File deleted from Project root directory");

}else System.out.println("File temp/file.txt doesn't exist in the project root directory");

// 删除空的目录

file = new File("temp");

if(file.delete()){

System.out.println("temp directory deleted from Project root directory");

}else System.out.println("temp directory doesn't exist or not empty in the project root directory");

// 试图删除非空目录

file = new File("D:/user/maxsu/project");

if(file.delete()){

System.out.println("D:/user/maxsu/project directory deleted from Project root directory");

}else System.out.println("D:/user/maxsu/project directory doesn't exist or not empty");

}

}

注意,与createNewFile()不同,delete方法不会抛出IOException异常。

2. Java删除目录

下面是一个简单的程序,演示如何删除非空目录。如果目录包含有文件,删除目录不会成功。

import java.io.File;

public class JavaDeleteDirectory {

public static void main(String[] args) {

File dir = new File("D:/worksp/java/log");

if(dir.isDirectory() == false) {

System.out.println("Not a directory. Do nothing");

return;

}

File[] listFiles = dir.listFiles();

for(File file : listFiles){

System.out.println("Deleting "+file.getName());

file.delete();

}

//现在目录为空,所以可以删除它

System.out.println("Deleting Directory. Success = "+dir.delete());

}

}

3. Java递归删除目录

前面编写了基于递归的代码来删除带有嵌套目录的目录。但是使用Java 7,可以使用Files类来完成。下面是用来删除目录的代码,它也负责删除嵌套目录。

import java.io.IOException;

import java.nio.file.FileVisitResult;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.SimpleFileVisitor;

import java.nio.file.attribute.BasicFileAttributes;

public class JavaDeleteDirectoryRecursively {

public static void main(String[] args) throws IOException {

Path directory = Paths.get("D:/worksp/maxsu/log");

Files.walkFileTree(directory, new SimpleFileVisitor() {

@Override

public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {

Files.delete(file); // 有效,因为它始终是一个文件

return FileVisitResult.CONTINUE;

}

@Override

public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {

Files.delete(dir); //这将起作用,因为目录中的文件已被删除

return FileVisitResult.CONTINUE;

}

});

}

}

上面就是java删除文件和java删除目录示例的全部内容。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值