C#怎么获取一个文件夹下面的子文件夹,和其他关于操作文件夹的问题?

2024-12-24 16:57:55
推荐回答(4个)
回答1:

需要用迭代函数吧所有深度的目录遍历。
函数遍历时,分开文件和子文件夹处理。文件的话更名移动,子文件夹就可以再次调用本方法处理。其结果就是遍历全部的文件夹。

------------------------------------------------------
代码基本上是这样的,需要修改移动的文件名的话,修改file.MoveTo(Path.Combine(p_2, file.Name));这句就可以了。
private void button2_Click(object sender, EventArgs e)
{
if (!(!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrEmpty(textBox3.Text)))
{
MessageBox.Show("没有填写源和目的路径");
}
//目录不可同源,否则将有可能出现循环调用
MoveFolderTo(textBox1.Text, textBox3.Text);
}

///


/// 从一个目录将其内容移动到另一目录
///

/// 源目录
/// 目的目录
private void MoveFolderTo(string p, string p_2)
{
//检查是否存在目的目录
if (!Directory.Exists(p_2))
Directory.CreateDirectory(p_2);
//先来移动文件
DirectoryInfo info = new DirectoryInfo(p);
FileInfo[] files = info.GetFiles();
foreach (FileInfo file in files)
{
file.MoveTo(Path.Combine(p_2, file.Name));
}
//最后移动目录
DirectoryInfo[] dirs = info.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
MoveFolderTo(Path.Combine(p, dir.Name), Path.Combine(p_2, dir.Name));
}
}

回答2:

ArrayList a = new ArrayList();
DirectoryInfo d = new DirectoryInfo("c:\\");
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis) 
        {      
              a.Add(fi.Name);
        }
       
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis) 
        {
             a.Add(di.Name);
              
        }

回答3:

1.
DirectoryInfo d = new DirectoryInfo("C:\\");//你想要的路径
DirectoryInfo[] items = d.GetDirectories();//该数组包含了子文件夹的信息

Console.WriteLine(items.Length);

foreach (var item in items)
{
Console.WriteLine(item.FullName);
}
2.Directory类有个静态方法Exists用于判断某文件夹是否存在:
if (Directory.Exists("C:\\Test"))
{
Console.WriteLine("Exists");
}

回答4:

private List GetFullFileName(string path)
{
List filePath = new List();
filePath.Add(path);

DirectoryInfo dir = new DirectoryInfo(path);
foreach (var item in dir.GetDirectories())
{
filePath.AddRange(GetFullFileName(item.FullName));
}
foreach (var item in dir.GetFiles())
{
filePath.Add(item.FullName);

}
return filePath;
}