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

2023-12-12

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

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

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


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


当您删除文件时:

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现“回收站”功能? 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 在 Oracle 整个架构的所有字段中搜索给定字符串

    我们如何在 Oracle 整个模式的所有字段中搜索给定字符串 Oracle中有执行上述操作的sql脚本吗 如果是 怎么办 我们可以通过其他脚本来完成吗 ALL TAB COLUMNS 是一个系统表 具有所有表列数据类型等 USER TAB
  • 已删除的 Firestore 文档仍在检索中

    我通过 Cloud Functions 中的触发器批量删除删除了一些文档 控制台显示它们已被删除 但是 我的应用程序仍然检索文档 这肯定是 firestore 的一个错误 而且是一个非常严重的错误 我发现另一个用户也有同样的问题here 我
  • 为什么1+++2=3?

    Python 如何计算表达式1 2 有多少曾经 我放在中间 它正在打印3作为答案 请任何人都可以解释这种行为 And for 1 2正在打印3并为1 2正在打印 1 你的表达方式是一样的 1 2 任何数字表达式前面都可以带有 使其变为负数
  • 如何使文本动态调整其大小以适应容器

    上图是没有使用FittedBox小部件 此处文本溢出 上图是使用FittedBox小部件 这里所有文本包含在一行中 Container width double infinity height 100 color Colors red ch
  • jQuery Mobile 页面更改后无法访问元素

    我在这里创建了一个简单的示例来说明我的问题 https github com kanesee jqm page state 基本上 我有 page1 html 其中有一个 id content 的 div 我将其颜色更改为红色 我有一个 p
  • Azure 客户端 ID、租户和 Key Vault URI 是否被视为机密?

    我正在加快使用 Azure 的速度 并尝试遵循最佳实践来保护我的 WPF 和 Xamarin Forms 应用程序 我使用 Azure AD 进行身份验证 使用 Key Vault 保存我的机密 我的客户端 ID 和租户设置怎么样 这些是与
  • Sweave/R/LaTeX 的初学者问题(图表、参考书目)——我的第一份文档

    我刚刚开始Sweave与R 我在这里使用R输出一些数据 我也试图包括一个情节 代码不会摇摆 我有一个Sweave来自网络的示例可以很好地编译RStudio with LaTeX documentclass a4paper article b
  • 如何使用 swfobject 通知 HTML 容器 SWF 已完成

    我正在将 flash 对象 swf 文件 嵌入到 HTML 页面中 该对象是用 as3 编写的 并使用 Flash Builder 构建 它的目的是显示一些动画 然后完成 能够通知容器动画已完成对我来说非常重要 但我找不到任何有效的方法 我
  • 如何将一对多从控制器传递到mvc4中的视图

    好的 这将是在你们帮助我进行更改之后 我假设我在某处遇到语法错误 View model OilNGasWeb ModelData Clients ViewBag Title Index h2 County s for h2 p Html A
  • 在设备上的线性内存中循环二维数组时将 float* 转换为 char*

    CUDA 4 0 编程指南第 21 页上有一个示例 如下所示 来说明循环 设备内存中二维浮点数组的元素 2D 的尺寸为宽 高 Host code int width 64 height 64 float devPtr size t pitc
  • Google Drive CSS/JS 返回 404 错误

    我在 Google Drive 上托管了我的 CSS JS 但它突然停止工作 在 Chrome Safari Mac iPhone 上测试过 检查后用Chrome 我看到 Google Drive 的链接返回 404 还有其他人有过吗 Go
  • 如何在加权networkx图中找到总和最高的路径?

    我有一个有向网络加权图 如何找到权重和最大的路径 您可以使用all simple paths并检查最大值 假设您有一个采用路径并给出权重总和的函数 heaviest path max path for path in nx all simp
  • Java 约定中的 Getters 和 Setters [重复]

    这个问题在这里已经有答案了 我的 Java 有点生疏 过去几年一直在做 C 我也希望这不会是一个非常主观的问题 不管怎样说我有课Person 是的 我知道有点陈词滥调 没有任何行为 C 版本 public class Person publ
  • 如何使用 pandas/sklearn 删除停止短语/停止 ngram(多单词字符串)?

    我想防止某些短语渗入我的模型 例如 我想阻止 红玫瑰 进入我的分析 我了解如何添加单独的停用词 如将单词添加到 scikit learn 的 CountVectorizer 的停止列表中通过这样做 from sklearn feature
  • Javascript - 日期范围验证

    我有一个表单用户可以输入任何日期 但我想设置一个日期范围验证 例如 从2012年12月1日到2013年1月1日 系统无法接受不在该范围内的用户的任何日期 我已经尝试过这个javascript代码 但它甚至没有给我任何警报当日期不在范围内时
  • 访问 C#.net 中的 webbrowser 控件中呈现的框架

    我需要获取 C net 中的 webbrowser 控件呈现的页面中的链接 问题是我认为该页面使用框架 这就是为什么我无法从网络浏览器获取任何链接 我如何访问或查看网络浏览器控件中的那些框架 你可以使用Frames财产 webBrowser
  • 函数属性与泛型的 TypeScript 组合

    此类型的要点是允许用户传入数据 颜色 hasColor or 数据 信息 hasInfo 不是任何其他组合 type Props data string info string hasInfo boolean color never has
  • Python Plotly 图表更新有两个下拉菜单

    我正在尝试在 Jupyter Lab 中构建一个绘图散点图 以便能够查看 DataFrame 中各个列之间的依赖关系 我想要两个下拉菜单 对应于 X 轴和 Y 轴 每个菜单中都有 DF 列的完整列表 当我在任何菜单中选择一列时 相应轴上的数
  • iOS 基本 FTP 设置;读写流

    我正在尝试创建一个具有一些非常基本的 FTP 功能的 iOS 5 应用程序 并且需要一些指导 它将连接到本地网络上的设备并使用 dat txt 文件执行读 写操作 在过去的几天里 我进行了一些搜索 并看到了各种建议 但没有什么足够简单 我可
  • 如何实现“回收站”功能?

    我正在开发一个 Java 桌面应用程序 需要在其中实现回收站功能 现在 我使用桌面应用程序将文件复制到名为回收站的文件夹中 然后删除原始文件 我将目标路径存储在一个文本文件中 其中文件被删除 只是为了将文件恢复到原始位置 恢复文件时 我只是