我正在开发一个 Java 桌面应用程序,需要在其中实现回收站功能。现在:
- 我使用桌面应用程序将文件复制到名为回收站的文件夹中,然后删除原始文件。
- 我将目标路径存储在一个文本文件中,其中文件被删除,只是为了将文件恢复到原始位置。
- 恢复文件时,我只是将该文件移动到原始位置。
我的问题是,当从不同位置删除同名文件时,移动到我创建的回收站文件夹中的所有文件以及同名旧文件都会被覆盖。
我该如何解决这个问题?另外,是否还有其他替代方法来获得类似于回收站的功能?
当您删除文件时:
- 生成一个随机数。
- 检查您的垃圾箱中是否已存在具有该名称的文件。是,执行1。
- 将文件复制到bin目录下,但使用随机数作为文件名。
- 将原始文件名和随机数存储在文本文件中。
- 删掉原来的。
(Note: 如果您有多个应用程序/线程同时执行此操作,则会出现问题。)
“恢复”文件所需的所有信息都在文本文件中,并且您已经避免了重复名称问题。
为了提高并发使用的鲁棒性,如果您有 Java 1.5 或更高版本,请考虑使用java.util.UUID而不是“哑”随机数作为回收的文件名。不能保证安全,但在大多数情况下它应该足够好(特别是如果正在运行的机器上只有一个真实用户)。
最后,在删除之前,请确保您已在上述步骤 3 和 4 中关闭了输出流,并且它们没有引发任何异常 - 否则您将面临丢失数据的风险。 (恢复时也是如此:在删除回收的文件流之前关闭恢复的文件流。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)