java file类delete()方法无法删除文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java file类delete()方法无法删除文件相关的知识,希望对你有一定的参考价值。
代码如下
System.out.println("exists?"+fileTxt[ j ].exists()); //返回true 文件存在
boolean b=fileTxt[ j ].delete();
System.out.println("delete?"+b); //false 文件删除失败
不是每次都删不掉,有时可以删除。web程序
txt文件可以新建、编辑,就是不能删除,我手动删除时提示:操作无法完成,因为文件已经在Java(TM) Platform SE binary打开。这是什么情况?最后一个bug了,大神帮忙啊。
因为文件夹里有文件时,执行delete()是不成功的
此外,你在删除的文件,有可能正被其他人或程序打开,这个时候删除也不会成功
参考Java API的java.io.File类:
delete
public boolean delete()
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则此目录必须为空才能删除。追问
txt文件可以新建、编辑,就是不能删除,我手动删除时提示:操作无法完成,因为文件已经在Java(TM) Platform SE binary打开。这是什么情况,最后一个bug了,大神帮忙啊。
追答你操作的文件的流Strame没有关闭
检查你的代码,InputStrame、OutputStrame有没有关闭
不然通过File.delete方法删除文件会失败
很久没上百度了,回答不及时,不好意思
后来Java提供了nio包,完善了一些io包的不足,提供了更多功能的本地、网络I/O操作,例如:非阻塞IO。
可以尝试调用java.nio.file.Files.delete(Path);,在删除文件出现问题时,可能会抛出NoSuchFileException,DirectoryNotEmptyException,IOException,SecurityException
可以更方便的定位无法删除文件的原因。而java.io.File.delete();方法不提供这些功能
java.nio.file.Path path = java.nio.file.Paths.get(fileTxt[j]);
java.nio.file.Files.delete(path);追问
需要从外界导入包吗?系统报错,找不到方法
追答你用的JDK什么版本?
追问txt文件可以新建、编辑,就是不能删除,我手动删除时提示:操作无法完成,因为文件已经在Java(TM) Platform SE binary打开。这是什么情况,最后一个bug了,大神帮忙啊。
参考技术B 打开任务管理器,选到性能选项卡,下面有个资源模拟器点开,点开后选到CPU选项卡,下面有个输入框的地方输入你的文件完整路径点检索
删不掉的时候可以看看有哪些地方在使用你这个文件追问
explorer.exe 2996 File F:\myBox\cdy\notebook\·
explorer.exe 2996 File F:\myBox\cdy\notebook\·
javaw.exe 6004 File F:\myBox\cdy\notebook\我的心情\·
javaw.exe 6004 File F:\myBox\cdy\notebook\我的心情\·
Java的File类浅析
File类,输入输出流基本上是离不开File类的。
File类里面常用的构造方法
File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)
常用实例方法
canRead()
canWrite()
canExecute()
delete()
getAbsolutePath()
getName()
getParent()
isFile()
isDirectory()
mkdir()
length()
代码示例。
注意:在Windows中用""来分割路径,但是在java代码里面可以用"/"来分割Windows的路径,不会错,而且不需要转义。
import org.testng.annotations.Test; import java.io.File; import java.io.IOException; public class FileDemo { @Test public void fileTest() throws IOException { //获取操作系统默认的文件路径分隔符 String sp = File.separator; System.out.println("The name separater on Windows is:" + sp); //System.getProperty("user.dir")用来获取用户的当前目录 String currentDir = System.getProperty("user.dir"); System.out.println("The current directory is :" + currentDir); //在当前路径的路径创建一个文件实例 File tom = new File("tom.txt"); //这一步才是真正创建了实实在在存在的文件 tom.createNewFile(); File jerry = new File("D:\ideaSpace\LearnJava01\jerry.txt"); //这一步才是真正创建了实实在在存在的文件 jerry.createNewFile(); File sam = new File("D:\ideaSpace\LearnJava01\sam.txt"); //这一步才是真正创建了实实在在存在的文件 sam.createNewFile(); //获取文件绝对路径 System.out.println(jerry.getAbsolutePath()); //获取文件长度 System.out.println(jerry.length()); //获取名称分隔符的上一级,下面的参数里面有一个分隔符"/"将返回斜杠前面的一层 //如果没有名称分隔符,也就是斜杠,将返回null File alice = new File("LearnJava01/alice.txt"); System.out.println(alice.getParent()); } }
结果
The name separater on Windows is:The current directory is :D:ideaSpaceLearnJava01 D:ideaSpaceLearnJava01jerry.txt 17 LearnJava01
以上是关于java file类delete()方法无法删除文件的主要内容,如果未能解决你的问题,请参考以下文章