File.delete有些文件不能删除,而Files.delete(path)可以,进行深入探究其原因

Posted 阿啄debugIT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了File.delete有些文件不能删除,而Files.delete(path)可以,进行深入探究其原因相关的知识,希望对你有一定的参考价值。

前言

最近更换deepin系统,在其上做项目,发现运行Java程序,File.delete有的目录下的文件,不能删除,有的能删除,反复对比文件属性及操作权限,均不得其解,最后发现采用Paths和Files得到解决!

我的问题

package com.stati.test;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;

import org.apache.commons.io.FileUtils;

import ch.qos.logback.core.util.FileUtil;

public class TestFile 

	public static void main(String[] args) throws IOException, InterruptedException 
		File file = new File("/home/tmpuser/tmp/test1/"); // 获取其file对象
		File[] files = file.listFiles(); // 遍历path下的文件和目录,放在File数组中
		for (File f : files)  // 遍历File[]数组
	
			  boolean flag = FileUtils.deleteQuietly(f); 
			  System.out.println("------------------------"+flag); 
			  if (f.delete()) // 若非目录(即文件),则打印 
				  System.out.println("---删除文件成功----" + f.getAbsolutePath());

以上是关于File.delete有些文件不能删除,而Files.delete(path)可以,进行深入探究其原因的主要内容,如果未能解决你的问题,请参考以下文章

解决File.Delete()删除不掉文件

file.delete()为啥删除不掉文件夹中的文件,确定不是数据流没有关闭的问题,也可以手动删除,非权限问题

如何实现异步 File.Delete/Create/Move?

如何在 C# 中检查 File.Delete() 是不是会在不尝试的情况下成功?

java删除文件夹

java删除文件夹