【发布时间】:2014-10-19 11:01:03
【问题描述】:
在过去的几天里,我创建了一种方法,该方法获取文件夹中的文件和第一个子文件夹中的文件,但不在这些子文件夹的子文件夹中。
为了更好地解释它:
这是文件夹:
//Folder1
//├file1.txt
//├subfolder1
//|├file2.txt
//|└subfolder3
//| └file3.txt
//└subfolder2
// └subfolder4
// └subfolder5
// └file4.txt
这就是我得到的:
//Folder1
//├file1.txt
//└subfolder1
// └file2.txt
这就是我将它放在我复制它的文件夹中的方式:
//Folder2
//├file1.txt
//├subfolder1___file2.txt
//├subfolder1___subfolder3___file3.txt
//└subfolder2___subfolder4___subfolder5___file4.txt
我就是这样:
//Folder2
//├file1.txt
//└subfolder1___file2.txt
(为了更好地理解这些结构,请阅读代码)
当前代码:
private void GetFiles(string filePath)
{
//filepath = "C:\Example\folder1"
string[] installfiles = Directory.GetFiles(Path.GetDirectoryName(filePath));
string appdatafolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string[] SelectedFiles;
foreach (string file in installfiles)
{
string fileName = Path.GetFileName(file);
if (!Directory.Exists(appdatafolder + "\\temp"))
{
Directory.CreateDirectory(appdatafolder + "\\temp");
}
if (!File.Exists(sourcefoldervalueLabel.Text + "\\" + fileName))
{
File.Copy(filePath + filename, appdatafolder + "\\temp\\" + fileName, true);
}
}
//here I would make it recursive.
if (Directory.GetDirectories(Path.GetDirectoryName(filePath)).Length >= 1)
{
string[] subdirectoryies = Directory.GetDirectories(filePath);
foreach (string directory in subdirectoryies)
{
string[] SubFiles = Directory.GetFiles(directory);
string directoryname = Path.GetFileName(directory);
foreach (string file in SubFiles)
{
string filename = Path.GetFileName(file);
if (!File.Exists(sourcefoldervalueLabel.Text + "\\" + directoryname + "\\" + filename))
{
File.Copy(file, appdatafolder + "\\temp\\" + directoryname + "___" + filename, true); // here I copy it into Folder2 but instead of creating subfolders I add "___" between the subfolder-name and the file-name
}
}
}
}
}
所以如果我让它在我设置的点递归(看代码),我可以得到每个文件夹中的文件(我想否则告诉我)。
所以我的问题是:
如果当前文件夹中有子文件夹,如何每次都重复“标记”代码?
我希望这个问题是可以理解的(否则我会解释它)。
一如既往,您可以尽一切可能纠正我:)。
祝你有美好的一天,
温柔。
【问题讨论】:
-
你可以在这篇文章中找到一些帮助:stackoverflow.com/a/19067063/2259589
-
这与您尝试做的类似:stackoverflow.com/a/25360943/451540
-
@Millas 如果您的意思是链接中投票最多的评论...我想我说过什么时候应该停止以避免invinitive loop
-
@thumbmunkeys 我认为每次都需要保存子目录名称以将其添加到文件名中,所以我不知道如何......一些想法?
-
为什么不赞成我尝试学习;)你们可以纠正我而不是反对;)
标签: c# directory subdirectory