我想将一个目录作为复制/粘贴例程移动,保持其结构不变。我不仅要查找目录中所有子文件夹中的文件,然后将它们复制/粘贴(如此解决方案),而是要克隆整个目录并保持其结构不变(树->子文件夹和文件),就像复制和粘贴例程一样。
所以我找到了这个函数,可以将一个包含文件的文件夹复制到新路径:
但是如果我想移动整个目录怎么办?换句话说,如果我有一个包含文件夹的文件夹,每个文件夹下面可能还有更多的文件夹和文件等等,而且也许不知道文件结构树的大小,像这样:
这个函数对以下目录结构起作用:
文件夹 -> 文件夹(们) -> 文件(们)
我尝试了 this 但没有得到想要的结果。它只检索所有文件,而不是搜索所有子文件夹。这不是我想要的。我想保留子文件夹和原始结构。在这里,我得到了四个文件,而不是像原来的目录结构一样,包括子文件夹、子文件夹中的子文件夹、子文件夹和文件。只有四个文件,因为它删除了重复项,但我不希望这种情况发生,因为我需要全部的文件。
以下是我的当前结构(但我的问题适用于任何目录):
文件夹 -> 文件夹 -> 文件夹+文件
以下是下面代码在新路径上的操作:
NewFolder -> 所有子文件夹中找到的所有文件
如何移动整个目录并保持其结构不变?而不是只获取目录中的文件并将它们移动!这个目录的大小未知。
所以我找到了这个函数,可以将一个包含文件的文件夹复制到新路径:
该函数的行为与复制/粘贴例程相同。它需要SourcePath、DestinationPath和布尔值OverWriteExisting。非常好而且小,但很遗憾它没有被标记为那个问题的实际答案(建议评分)。文件夹->文件(s)
但是如果我想移动整个目录怎么办?换句话说,如果我有一个包含文件夹的文件夹,每个文件夹下面可能还有更多的文件夹和文件等等,而且也许不知道文件结构树的大小,像这样:
我正在使用以下例程来复制/粘贴具有文件夹的文件夹。 但是在这里,我知道我只有一个层次的文件夹,所以只需要一个foreach循环:文件夹 -> 文件夹(们) -> ... -> 文件夹(们) -> 文件(们)
foreach (var Folder in DestinationFolder) // here I know that I have only one level of folders to reach the files
{
CopyDirectory(FolderPath, DestinationPath, false); // use that function to copy the files
}
这个函数对以下目录结构起作用:
文件夹 -> 文件夹(们) -> 文件(们)
我尝试了 this 但没有得到想要的结果。它只检索所有文件,而不是搜索所有子文件夹。这不是我想要的。我想保留子文件夹和原始结构。在这里,我得到了四个文件,而不是像原来的目录结构一样,包括子文件夹、子文件夹中的子文件夹、子文件夹和文件。只有四个文件,因为它删除了重复项,但我不希望这种情况发生,因为我需要全部的文件。
以下是我的当前结构(但我的问题适用于任何目录):
文件夹 -> 文件夹 -> 文件夹+文件
以下是下面代码在新路径上的操作:
NewFolder -> 所有子文件夹中找到的所有文件
dialog.FileName = dialog.FileName.Replace(".xml", ""); // get the destination path
DirectoryInfo dirInfo = new DirectoryInfo(dialog.FileName);
if (dirInfo.Exists == false)
Directory.CreateDirectory(dialog.FileName);
List<String> EverythingInTheDirectory = Directory
.GetFiles(FileStructure.baseSessionPath + "\\" + SelectedSession.Name, "*.*", SearchOption.AllDirectories).ToList(); // source
foreach (string file in EverythingInTheDirectory)
{
FileInfo mFile = new FileInfo(file);
// to remove name collusion
if (new FileInfo(dirInfo + "\\" + mFile.Name).Exists == false)
mFile.MoveTo(dirInfo + "\\" + mFile.Name);
}
如何移动整个目录并保持其结构不变?而不是只获取目录中的文件并将它们移动!这个目录的大小未知。