当前位置: 首页 > 面试题库 >

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

史钊
2023-03-14
问题内容

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

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

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

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


问题答案:

删除文件时:

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

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

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

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

最后,请确保在删除之前已关闭上述步骤3和4中的输出流,并且它们没有引发任何异常-
否则,您可能会丢失数据。(还原时也是如此:在删除回收的文件流之前,先关闭还原的文件流。)



 类似资料:
  • 本文向大家介绍基于jQuery实现拖拽图标到回收站并删除功能,包括了基于jQuery实现拖拽图标到回收站并删除功能的使用技巧和注意事项,需要的朋友参考一下 本文利用jQuery实现一个拖拽删除桌面小图标的功能,使用起来就像操作系统的回收站一样,我们只需要拖动应用图标至垃圾箱即可删除这个图标,分享给大家,具体实现方法如下 运行效果图: 引入核心文件 这里需要引入jquery,jquery ui,与j

  • 为主机、硬盘、镜像资源提供回收站功能。避免资源误删除导致数据丢失。 为了避免因为删除误操作而导致的数据丢失风险,云管平台提供了回收站功能。回收站用于临时存放用户删除的主机(包括虚拟机和裸金属)、硬盘、镜像文件。回收站功能仅支持管理员用户使用,普通用户不可见。 虚拟机 主机回收站用于存放用户删除的虚拟机和裸金属文件。 硬盘 硬盘回收站用于存放用户删除的硬盘文件。 镜像 镜像回收站用于存放用户删除的镜

  •       已删除的文件/文件夹/团队空间将统一进入到回收站,可以从回收站对文件进行恢复或者彻底删除。

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”-> “回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 。 在对话窗口中确认删除。 移除全部对象 按住 Control 键并点按对象选项卡的任意位置,然后在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象