如何实现“回收站”功能?

我正在开发一个Java桌面应用程序,其中需要实现回收站功能。目前:

  1. 我使用桌面应用程序将文件复制到名为回收站的文件夹中,然后删除原始文件。
  2. 我将目标路径存储在一个文本文件中,该文件已被删除,只是为了将文件还原到原始位置。
  3. 还原文件时,我只是将文件移到原始位置。

我的问题是,当从不同位置删除具有相同名称的文件时,所有移至由我创建的回收站文件夹和具有相同名称的旧文件的所有文件都将被覆盖。


我该如何解决这个问题?另外,还有其他替代方法来获得类似于回收站的功能吗?

回答:

删除文件时:

  1. 生成一个随机数。
  2. 检查您的bin中是否已存在具有该名称的文件。是,执行1。
  3. 将文件复制到bin目录,但使用随机数作为文件名。
  4. 将原始文件名和随机数存储在文本文件中。
  5. 删除原件。

( : 如果您有多个应用程序/线程同时执行此操作,则会出现此问题。

您需要“还原”文件的所有信息都在文本文件中,并且避免了名称重复的问题。

为了更强健地防止并发使用,并且如果您具有Java

1.5或更高版本,请考虑使用一个java.util.UUID而不是“哑”的随机数作为回收文件名。不能保证AFAIK是安全的,但是在大多数情况下它应该足够好(尤其是如果机器上只有一个真实用户,则该用户正在运行)。

最后,请确保在删除之前已关闭上述步骤3和4中的输出流,并且它们没有引发任何异常-

否则,您可能会丢失数据。(还原时也是如此:在删除回收的文件流之前,先关闭还原的文件流。)

以上是 如何实现“回收站”功能? 的全部内容, 来源链接: utcz.com/qa/417689.html

回到顶部