为了账号安全,请及时绑定邮箱和手机立即绑定

我如何制作一个在关闭时删除文件的监视服务?

我如何制作一个在关闭时删除文件的监视服务?

大话西游666 2023-03-23 16:37:22
我基本上想做一个监视服务(或类似的东西)来检查文件是否已关闭,如果它确实关闭(完成执行)则 立即删除该文件。我怎样才能做到这一点?请给我一个cmd命令或一些代码(我更喜欢Java)。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

好吧,这应该不难做到,如果你用谷歌搜索一下,你会发现一个名为 Java-File Method 的方法,file.canWrite()如果文件被其他程序锁定,它基本上会返回。


所以代码方面你可以做的是这样的。


boolean isDeleted = false;

File f = new File (// Put your file here);

while (!isDeleted) {

    if (f.canWrite()) {

        f.delete();

        isDeleted = true;

    } else {

        try {

            Thread.sleep(10); // Throws Exception you need to catch somewhere...

        } catch (Exception e) {}

    }

}

您需要将此代码包含到某些 Java 程序中。我添加了一个简单的说明Thread.sleep(10),即您的 PC 不必检查 aaaaaallllllllll 时间。请参阅检查文件是否在 Java 中被锁定


其他可能性是尝试重命名文件,file.renameTo("some_path.txt");因为此方法还会返回一个布尔值是否成功!请注意,您需要在删除文件之前再次更新该文件。


我看到的最后一种可能性与第二种可能性非常相似。您尝试通过调用 If the file still exists 来删除文件,file.delete(); 您知道它不成功并因此循环。


查看完整回答
反对 回复 2023-03-23
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我假设你的意思是当文件没有在另一个程序中打开时,你不能对另一个程序进行更改?(如果您谈论的是您自己的程序打开文件,这就容易多了。)

在 Windows 上,很难分辨哪个程序打开了文件。查看https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows了解一些选项。我喜欢handle这个工具,但它必须以管理员身份运行,这可能是个问题。您可以按照Check if a file is locked in Java 中的建议尝试重命名或写入文件

一旦你有了一个脚本来确定文件是否打开到你满意的程度,编写一个循环测试文件是否打开然后删除文件的脚本应该是相当简单的。


查看完整回答
反对 回复 2023-03-23
  • 2 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信