c#中遍历一个文件夹 并对其子文件夹中的文件移动到一个新创建的文件夹下同时改名 求教

作者&投稿:金航 (若有异议请与网页底部的电邮联系)
C#实现从一个大文件夹中遍历子文件夹,并将每个子文件夹地址获取至path~

string[] allDirs = Directory.GetDirectories(@"D:\Document\Work"); //得到文件夹下的所有文件夹
allDirs.ToList().ForEach(p =>
{
if (Regex.IsMatch(p, @"\d+")) //如果文件夹的名字全部都是数字
{
DirectoryInfo TheFolder = new DirectoryInfo(p); //这下面是你的操作..我复制过来的
foreach (FileInfo file in TheFolder.GetFiles())
{
ProcessFile(p + file.Name.ToString());//路径加文件名
file.MoveTo(@"D:\Document\Work\DataBackUp\" + file.Name.ToString());
//将文件夹中已经导入db的文件备份至DataBackUp文件夹并删除原有文件
//file.Delete();
}
}
});

输入某文件夹路径,遍历该文件夹及其子文件夹(包括子文件夹的子文件夹等),获取其中所有文件的函数:
/// /// 查找指定文件夹下指定后缀名的文件/// /// 文件夹/// 后缀名/// 文件路径public void GetFiles(DirectoryInfo directory, string pattern, ref List fileList){if (directory.Exists || pattern.Trim() != string.Empty){try{foreach (FileInfo info in directory.GetFiles(pattern)){fileList.Add(info.FullName.ToString());}}catch (System.Exception ex){Console.WriteLine(ex.ToString());}foreach (DirectoryInfo info in directory.GetDirectories())//获取文件夹下的子文件夹{GetFiles(info, pattern, ref fileList);//递归调用该函数,获取子文件夹下的文件}}}
使用实例:
List FindResult = new List();
GetFiles(new DirectoryInfo(@"C:\","*.*", ref FindResult); //获取C盘下的所有文件路径GetFiles(new DirectoryInfo(@"\\192.168.1.107\Save"), "*.*", ref FindResult);//获取局域网上共享文件夹下的所有文件

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

------------------------------------------------------
代码基本上是这样的,需要修改移动的文件名的话,修改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);
}

/// <summary>
/// 从一个目录将其内容移动到另一目录
/// </summary>
/// <param name="p">源目录</param>
/// <param name="p_2">目的目录</param>
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));
}
}

string[] ps=Directory.GetDirectories("源目录");
foreach (string p in ps)
{
DirectoryInfo dir = new DirectoryInfo(p);
dir.MoveTo("目标目录" + dir.Name);
}
MessageBox.Show("移动完成");

C的音标是什么
答:英语发音:/siː/ C(字母符号)排名:第三个字母 大写:C 小写:c 由来:字母C的产生可能是由于一个投掷棒的符号,像在古埃及的象形文字里字母C的发展史并很早出现在闪族的书面当中-大约在公元前1500年的西奈半岛。

c的化学式的意义。。。
答:C为碳的元素符号。一、作为化学式,它的含义为:1、表示碳单质,如金刚石 ,或者石墨。。。2、表示金刚石或者石墨。。。由碳元素组成 3、表示金刚石或者石墨。。。由碳原子构成 二、另外,作为元素符号:1、还表示碳元素 2、还表示一个碳原子。

c代表什么意思?
答:1、表示浓度,单位为mol/L,计算式为:C=n/V. C=1000ρω/M。含义:以1升溶液中所含溶质的摩尔数表示的浓度。以单位体积里所含溶质的物质的量(摩尔数)来表示溶液组成的物理量,叫作该溶质的摩尔浓度,又称该溶质物质的量浓度。溶质含量越多,浓度越大。浓度可以用一定的溶液中溶质的克数、克...

c是什么化学元素?
答:C在化学中有两种含义:1、表示浓度,单位为mol/L,计算式为:C=n/V. C=1000ρω/M。含义:以1升溶液中所含溶质的摩尔数表示的浓度。以单位体积里所含溶质的物质的量(摩尔数)来表示溶液组成的物理量,叫作该溶质的摩尔浓度,又称该溶质物质的量浓度。溶质含量越多,浓度越大。浓度可以用一定...

c是什么?
答:c是字母符号。C(大写) 、c(小写)是英文字母顺数第三个,俄语字母顺数第19个。例如:英语单词cloud和“苏联”的俄语缩写СССР的第一个字母就是c。起源:(1)字母C的产生可能是由于一个投掷棒的符号,像在古埃及的象形文字里,并很早出现在闪族的书面当中-大约在公元前1500年的西奈半岛。(...

c的意思是怎么样的?
答:c的意思:1、在化学中,表示碳的化学符号。2、在乐理中,表示:音阶中的C音,调号中于C音开始的音乐的C大调及C小调,拍子记号中的4/4拍子。3、在罗马数字中,表示100。4、在国际单位制中,表示电荷量的单位“库仑”。5、在计算机科学中,有C语言、C++、C#、Objective-C等。6、在营养学中,表示...

c在化学中指什么意思
答:C在化学中有两种含义:1、表示浓度,单位为mol/L,计算式为:C=n/V. C=1000ρω/M。含义:以1升溶液中所含溶质的摩尔数表示的浓度。以单位体积里所含溶质的物质的量(摩尔数)来表示溶液组成的物理量,叫作该溶质的摩尔浓度,又称该溶质物质的量浓度。溶质含量越多,浓度越大。浓度可以用一定...

C化学符号是什么意思?
答:C为碳的元素符号。一、作为化学式,它的含义为:1、表示碳单质,如金刚石 ,或者石墨。。。2、表示金刚石或者石墨。。。由碳元素组成 3、表示金刚石或者石墨。。。由碳原子构成 二、另外,作为元素符号:1、还表示碳元素 2、还表示一个碳原子。

c是什么意思数学
答:C是数学中的一种常数,常出现在各种式子中。其代表的是一个固定的数值,通常用来表示某种特定的物理量或者数学常量。C的意义在不同的上下文中有所不同,比如C可能代表光速,圆周率或者其他数学上的常量。在数学上,C代表了需要用作计算基础的一些重要数值,因此不同的C值被广泛应用于各种数学分支中。在...

C的含义是什么?
答:数学符号c右上角是1右下角是4的意思是数学中的组合,右下角的4表示总体个数,右上角的1表示抽取个数,且从4个里面抽取一个,C¹₄=4÷1=4。组合:一般地,从n个不同的元素中,任取m(m≤n)个元素为一组,叫作从n个不同元素中取出m个元素的一个组合。所有这样的组合的总数...