首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现“回收站”功能?

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

Stack Overflow用户
提问于 2011-05-20 13:44:18
回答 3查看 2.9K关注 0票数 5

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

使用我的桌面应用程序将一个文件复制到一个名为回收站的文件夹中,然后删除原始文件。location.

  • While

  • I将目标路径存储在文本文件中,在文本文件中删除该文件,仅为了将该文件还原到恢复该文件的原始

  • ,我只需将该文件移动到原始位置。

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

我怎样才能解决这个问题?另外,还有其他类似回收站功能的替代方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-20 13:53:56

删除文件时:

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

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

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

要想对并发使用具有更强的健壮性,如果您有Java1.5或更高版本,请考虑使用java.util.UUID而不是“哑”随机数作为可回收的文件名。不能保证AFAIK是安全的,但是在大多数情况下它应该足够好(特别是在这台正在运行的机器上只有一个真正的用户时)。

最后,在删除之前,确保您已经在上面的步骤3和4中关闭了您的输出流,并且它们没有引发任何异常--否则您将有丢失数据的风险。(还原时也是这样:在删除回收的文件流之前关闭已恢复的文件流。)

票数 5
EN

Stack Overflow用户

发布于 2011-05-20 13:53:09

每当需要将文件移动到回收站时,

  1. 将其重命名为密钥,并将其存储在回收站文件夹中,
  2. 还将此键映射为文本文件中文件的位置。

现在,当用户请求恢复时,使用该键从txt获取确切的位置并进行还原。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 19:51:41

文件名或绝对文件名“c.Programs.file-to delted.xls”并不是唯一的。您需要的是唯一的文件ID,它是为每个需要与已删除的文件对象一起存储的文件生成的。

当用户试图从回收站重新/取消删除文件时,您将使用文件id而不是文件名进行操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6072828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档