需求:传一个file对象,写一个删除文件的方法。
具体实现较简单,主要是考虑多种情况。
- 文件是否存在
- 是否是文件夹,如果是文件夹,需要删除里面的文件之后才可以删除该文件夹
- 是否有其它程序在读取该文件,如果有,此时无法删除该文件。
import java.io.*;
import java.nio.file.Files;
import java.util.Arrays;
/**
* @author yyw
* @version 1.0
* @date 2019/6/1 8:39
**/
public class DeleteFile {
public static void main(String[] args) {
File file = new File("C:\\Users\\Administrator\\Desktop\\yyw");
/**
*注释代码是模拟如果有流正在读写该文件,删除文件时会抛出异常
*/
// try {
// FileInputStream fis = new FileInputStream(file);
// int read = fis.read();
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
deleteFile(file);
}
private static void deleteFile(File file) {
if (!file.exists()) {
System.out.println("文件不存在");
} else {
if (file.isDirectory()) {
System.out.println("这是一个文件夹");
File[] files = file.listFiles();
Arrays.stream(files).forEach(item -> {
if (item.isDirectory()) {
deleteFile(item);
}
try {
Files.delete(item.toPath());
} catch (IOException e) {
e.printStackTrace();
}
});
try {
Files.delete(file.toPath());
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
Files.delete(file.toPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}