【发布时间】:2012-07-06 22:12:50
【问题描述】:
在我的程序中,我正在调用对文件夹内容进行大量更改的方法,包括:
deleting files/folders,
changing files/folders,
adding files/folders,
adding/deleting symboliclinks/junctions.
到目前为止,这没有问题。但我想出了一个想法,可以选择将文件夹的最终状态(在所有操作完成后)投影到另一个文件夹,以便原始文件夹保持不变。
仅在应用操作之前复制文件夹是不合适的,因为操作可能会删除大量数据,而这些数据必须事先进行不必要的复制。所以我想到,一个专业的程序员肯定不会这样处理。
理想情况下我会写这样的东西(伪代码):
originalFolder.Delete(很多文件).Add(一些其他的东西,可能会改变一些权限等).ProjectTo(newFolder)
是否有某种设计模式或其他方式可以实现这样的目标?也许一些虚拟文件系统我可以在将其具体化到单独的文件夹之前对其进行处理?
我知道如何编写扩展方法,并且我已经编写了很多琐碎的方法,但我真的需要走上正确的道路才能实现这样的目标。
【问题讨论】:
-
听起来有点不清楚。您是说您希望能够在一个文件夹中模拟对特定文件的更改,然后在另一个文件夹中实际进行更改。它会选择在另一个文件夹中更改什么文件?
-
您希望仅投影您的更改还是原始文件夹的最终状态?因为如果您只想要原始文件夹的最终状态,则归结为在所有操作完成后获取原始文件夹的副本...
-
我想确保原始文件夹永远不会被触及,所以我们假设它是只读的。现在我想定义对该文件夹的各种虚拟更改(添加/删除文件/文件夹/链接)。然后我想在另一个位置创建一个文件夹,该文件夹是该文件夹的精确副本,因为如果它首先被修改。
标签: c# .net filesystems directory