/// <summary> /// 显示文件夹下所有子文件夹和文件的名称 /// </summary> /// <param name="tv">TreeView控件</param> /// <param name="Sdir">文件夹的目录</param> /// <param name="TNode">节点</param> /// <param name="n">标识,判断当前是文件夹还是文件</param> public void Files_Copy(TreeView tv, string Sdir, TreeNode TNode, int n) { DirectoryInfo dir = new DirectoryInfo(Sdir); try { if (!dir.Exists)//判断所指的文件或文件夹是否存在 { return; } DirectoryInfo dirD = dir as DirectoryInfo; //如果给定参数不是文件夹则退出 if (dirD == null) //判断文件夹是否为空 { return; } else { if (n == 0) { TNode = tv.Nodes.Add(dirD.Name);//添加文件夹的名称 TNode.Tag = 1; } else { TNode = TNode.Nodes.Add(dirD.Name);//添加文件夹中各子文件夹的名称 TNode.Tag = 1; } } FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有的文件和子文件夹 //对单个FileSystemInfo进行判断,如果是文件夹则进行地柜 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null)//如果是文件的话对文件进行复制操作 { //获取文件所在的原始路径 FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); TNode.Nodes.Add(file.Name);//添加文件 TNode.Tag = 1; } else { string pp = FSys.Name; //获取当前搜索到的文件夹名称 Files_Copy(tv, Sdir + "\\" + FSys.ToString(), TNode, 1); //如果是文件夹则进行递归调用 } } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }
/// <summary> /// 顯示文件夾下所有子文件夾及文件的名稱 /// </summary> /// <param Sdir="string">文件夾的目錄</param> /// <param TNode="TreeNode">節點</param> /// <param n="int">標識,判斷目前是文件夾,還是文件</param> private void Files_Copy(TreeView TV, string Sdir, TreeNode TNode, int n) { DirectoryInfo dir = new DirectoryInfo(Sdir); try { if (!dir.Exists)//判斷所指的文件或文件夾是否存在 { return; } DirectoryInfo dirD = dir as DirectoryInfo; //如果給定參數不是文件夾則退出 if (dirD == null) //判斷文件夾是否為空 { return; } else { if (n == 0) { TNode = TV.Nodes.Add(dirD.Name);//新增文件夾的名稱 TNode.Tag = 1; } else { TNode = TNode.Nodes.Add(dirD.Name);//新增文件夾裡面各文件夾的名稱 TNode.Tag = 1; } } FileSystemInfo[] files = dirD.GetFileSystemInfos();//取得文件夾中所有文件和文件夾 //對單個FileSystemInfo進行判斷,如果是文件夾則進行遞迴操作 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null) //如果是文件的話,進行文件的複製操作 { FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //取得文件所在的原始路徑 TNode.Nodes.Add(file.Name); //新增文件 TNode.Tag = 1; } else { string pp = FSys.Name; //取得目前搜索到的文件夾名稱 Files_Copy(TV, Sdir + "\\" + FSys.ToString(), TNode, 1); //如果是文件夾,則進行遞迴呼叫 } } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } }
/// <summary> /// 文件夹的复制 /// </summary> /// <param Ddir="string">要复制的目的路径</param> /// <param Sdir="string">要复制的原路径</param> public void Files_Copy(string Ddir, string Sdir) { DirectoryInfo dir = new DirectoryInfo(Sdir); string SbuDir = Ddir; try { if (!dir.Exists)//判断所指的文件或文件夹是否存在 { return; } DirectoryInfo dirD = dir as DirectoryInfo; //如果给定参数不是文件夹则退出 string UpDir = UpAndDown_Dir(Ddir); if (dirD == null) //判断文件夹是否为空 { Directory.CreateDirectory(UpDir + "\\" + dirD.Name); //如果为空,创建文件夹并退出 return; } else { Directory.CreateDirectory(UpDir + "\\" + dirD.Name); } SbuDir = UpDir + "\\" + dirD.Name + "\\"; FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有文件和文件夹 //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null) //如果是文件的话,进行文件的复制操作 { FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //获取文件所在的原始路径 SFInfo.CopyTo(SbuDir + "\\" + file.Name, true); //将文件复制到指定的路径中 } else { string pp = FSys.Name; //获取当前搜索到的文件夹名称 Files_Copy(SbuDir + FSys.ToString(), Sdir + "\\" + FSys.ToString()); //如果是文件,则进行递归调用 } } } catch { MessageBox.Show("文件制复失败。"); return; } }
/// <summary> /// 資料夾的複製 /// </summary> /// <param Ddir="string">要複製的目的路徑</param> /// <param Sdir="string">要複製的原路徑</param> public void Files_Copy(string Ddir, string Sdir) { DirectoryInfo dir = new DirectoryInfo(Sdir); string SbuDir = Ddir; try { if (!dir.Exists)//判斷所指的文件或資料夾是否存在 { return; } DirectoryInfo dirD = dir as DirectoryInfo; //如果給定參數不是資料夾則退出 string UpDir = UpAndDown_Dir(Ddir); if (dirD == null) //判斷資料夾是否為空 { Directory.CreateDirectory(UpDir + "\\" + dirD.Name); //如果為空,建立資料夾並退出 return; } else { Directory.CreateDirectory(UpDir + "\\" + dirD.Name); } SbuDir = UpDir + "\\" + dirD.Name + "\\"; FileSystemInfo[] files = dirD.GetFileSystemInfos();//取得資料夾中所有文件和資料夾 //對單個FileSystemInfo進行判斷,如果是資料夾則進行遞迴操作 foreach (FileSystemInfo FSys in files) { FileInfo file = FSys as FileInfo; if (file != null) //如果是文件的話,進行文件的複製操作 { FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //取得文件所在的原始路徑 SFInfo.CopyTo(SbuDir + "\\" + file.Name, true); //將文件複製到指定的路徑中 } else { string pp = FSys.Name; //取得目前搜索到的資料夾名稱 Files_Copy(SbuDir + FSys.ToString(), Sdir + "\\" + FSys.ToString()); //如果是文件,則進行遞迴呼叫 } } } catch { MessageBox.Show("文件制復失敗。"); return; } }
private void FileTraverse(string folderPath, List <string> extensions, bool?isRecursive) { if (string.IsNullOrEmpty(folderPath) || stopFlag) { return; } DirectoryInfo dir = new DirectoryInfo(folderPath); try { if (!dir.Exists) { return; } DirectoryInfo dirD = dir as DirectoryInfo; FileSystemInfo[] files = dirD.GetFileSystemInfos(); foreach (FileSystemInfo FSys in files) { FileInfo fileInfo = FSys as FileInfo; if (fileInfo != null && (extensions.Contains(System.IO.Path.GetExtension(fileInfo.Name)) || extensions.ElementAt(0) == "")) { string fileName = System.IO.Path.Combine(fileInfo.DirectoryName, fileInfo.Name); l_info.Dispatcher.Invoke(() => { l_info.Content = fileName; }); filePathList.Add(fileName); } else if (isRecursive == true) { string pp = FSys.Name; FileTraverse(System.IO.Path.Combine(folderPath, FSys.ToString()), extensions, isRecursive); } } } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message); return; } }