日期:2014-05-18  浏览次数:20683 次

有没有人用java写过回收站的功能求源码求思路
先删除了文件1,然后又删除了文件夹A,在删除了文件夹A的同时也就删除了文件2、文件3。
接着恢复文件夹A,我觉的只会恢复文件2、文件3,而不会恢复文件1。
因为文件1,是在文件夹A之前被删除的,而文件2、文件3是删除文件夹A的同时被删除,所以在恢复文件夹A的时候,只能恢复文件2、文件3,而不会恢复文件1(手工恢复除外


应该怎么实现
------解决方案--------------------
没做过,有个想法:
定义一个特殊的文件夹,作为回收站。
删除操作,就是把文件或目录(及子文件、子目录)移动到回收站,并记录其原路径。
恢复操作,就是按记录的原路径,将回收站的文件移动到原路径。
彻底删除,就是在回收站里将文件删掉,并删除其原路径信息。
------解决方案--------------------
偷懒点的实现方式下,恢复都是逐个回复的。也就是在回收站内的每一个删除项全都是孤立的,只有删除的时间先后不同而已。

如果要实现联动效果的恢复,就要增加“删除事件”的管理,那么数据模型就有两个实体:删除事件 和 删除项,一个删除事件可以对应N个删除项。恢复时以删除事件为主来进行恢复。不过这样会复杂化很多问题。

不如就按照一个一个孤立的删除项来管理好了,把检索删除项和批量恢复删除项做的方便点就是了。
------解决方案--------------------
这个好像很容易,别担心编码量和复杂度.
首先为每次删除做文件/文件夹转储(转储后的名称为系统生成的唯一标示)并与原文件名做关联.
其次读取你用于存储转储文件(被删除的文件或文件夹),然后显示关联文件名

------解决方案--------------------
有回收站这个表的是吧  
  可以这个表加一个字段 is_from_dir  (判断是否是从文件夹删除的)   默认值是  0

当你直接删除文件的时候 把文件基本数据存入回收站这个表中  is_from_dir这个字段的值不用改变

当从文件夹删除文件的时候    可以在is_from_dir 这个字段存入文件夹的ID  
恢复的时候 查询是否有这个ID的 恢复就可以了

------解决方案--------------------
你把每一次删除都当成一个单独的操作来想呢
这样你想恢复谁就恢复谁了撒