这是目前我必须删除的文件,但它不工作。我以为可能是权限问题什么的,但事实并非如此。我正在测试的文件是空的并且存在,所以不确定为什么不删除它。
UserInput.prompt("Enter name of file to delete");
String name = UserInput.readString();
File file = new File("\\Files\\" + name + ".txt");
file.delete();
任何帮助都将不胜感激!
我现在有:
File file = new File(catName + ".txt");
String path = file.getCanonicalPath();
File filePath = new File(path);
filePath.delete();
在运行时尝试并找到正确的路径,以便在将程序传输到其他计算机时仍能找到该文件。
13条答案
按热度按时间olqngx591#
如果要删除文件,请先关闭所有连接和流。然后删除文件。
arknldoa2#
在我的例子中,是close()由于未处理的异常而没有执行。
假设在parse()上抛出异常,此方法不处理异常,因此文件未关闭,接下来,文件将被删除,delete语句失败,请不要删除。
所以,相反,我有这样的代码,然后它的工作。。。
所以基本的java,有时我们会忽略。
tct7dpnv3#
问题还可能是由于您忘记关闭的任何输出流造成的。在我的情况下,在删除文件之前,我正在处理该文件。然而,在文件操作中的一个地方,我忘记关闭一个输出流,我用来写入后来试图删除的文件。
wlsrxk514#
我错误地打开了一个bufferedreader,比如:
…当然我不能执行
f.delete()
因为我 Package 了filereader,而不是示例化它自己的变量,在那里我可以显式地关闭它。嗯。。。一旦我编码了:
我可以开一张支票
br.close(); br=null; fread.close(); fread=null;
以及f.delete()
干得不错。brvekthn5#
在我的例子中,我正在处理一个目录中包含的一组jar文件。在我处理它们之后,我试图从那个目录中删除它们,但它们不会删除。我使用jarfile来处理它们,问题是当我完成时忘记关闭jarfile。
vqlkdk9b6#
我怀疑问题是路径不正确。试试这个:
trnvg8h37#
尝试关闭所有
FileOutputStream/FileInputStream
你以前用其他方法打开过,然后尝试删除,效果很不错。t5zmwmid8#
问题是,检查你是否关闭了所有的流或没有如果打开关闭流和删除,重命名..等文件这是为我工作
cxfofazt9#
如果仍然无法工作,可以调用垃圾收集器关闭文件并释放内存
如果以前使用代码段打开过文件,请不要忘记关闭该文件
fio.close()
我用Java1.8测试过,效果不错。ezykj2lf10#
一定要找出当前的工作目录,并编写与之相关的文件路径。
此代码:
... 会打印出那个目录。
另外,与你的问题无关,尽量使用
File.separator
保持操作系统的独立性。反斜杠只适用于窗口。zd287kbt11#
由于目录不是空的,file.delete()总是返回false。
我曾经
file.deleteRecursive()
它在kotlin中可用,将直接完全删除并返回布尔响应,就像file.delete()一样。
pgky5nke12#
我也有同样的问题!然后意识到我的目录不是空的。我在另一个线程中找到了解决方案:不能通过java删除目录
2j4z5cfb13#
如其他答案所示,在windows上不能删除打开的文件。但是,另一个可以阻止文件在windows上被删除的方法是,如果它被Map到
MappedByteBuffer
(或DirectByteBuffer
)--如果是,则在字节缓冲区被垃圾回收之前,无法删除该文件。有一些相对安全的代码来强制关闭(清洗)aDirectByteBuffer
在这里收集垃圾之前:https://github.com/classgraph/classgraph/blob/master/src/main/java/nonapi/io/github/classgraph/utils/fileutils.java#l606 清洁后ByteBuffer
,您可以删除该文件。但是,一定不要使用ByteBuffer
在清理完它之后,jvm将再次崩溃。