编写一个函数,遍历一个文件夹下的所有文件和子文件夹

解决方案 »

  1.   

    private void SearchFile(string path)
    {
    foreach(string dirPath in Directory.GetDirectories(path))
            {
    SearchFile(dirPath);
            }
    DirectoryInfo dirinfo = new DirectoryInfo(path);
    foreach (FileInfo fileinfo in dirinfo.GetFiles())
            {
    //你要做的事情
            }
    }
      

  2.   

    递归的方法,用FOR EACH()或者你写一个TREEVIEW的程序出来,你倒过来就明白了
      

  3.   

    private void ChangeAllFileName(string path)
            {
                ChangeChildFileName(path);
                foreach (string str in Directory.GetDirectories(path))
                {
                    ChangeAllFileName(str + "\\");
                }            
            }
            /// <summary>
            /// 更改文件名,将前缀为pre的文件名更改为_s,如:prea.jpg更名为a_s.jpg
            /// </summary>
            /// <param name="path"></param>
            private void ChangeChildFileName(string path)
            {
                
                string fileName = "";
                foreach (string str in Directory.GetFiles(path))
                {
                    fileName = str.Substring(str.LastIndexOf('\\') + 1, str.Length - str.LastIndexOf('\\') - 1);
                    if (fileName.IndexOf("pre") == 0)
                    {                    
                        fileName = fileName.Replace("pre", "").Replace(".", "_s.");
                        if (File.Exists(path + fileName))
                        {
                            File.Delete(path + fileName);
                        }
                        File.Move(str, path + fileName);
                    }                
                }
            }
      

  4.   

    下面这个是我自己写的拷贝某文件夹下所有的文件,你把拷贝的代码去掉就成遍历了.Public Sub CopyDerictory(ByVal DirectorySrc As DirectoryInfo, ByVal DirectoryDes As DirectoryInfo)
            Dim strDirectoryDesPath As String = DirectoryDes.FullName & "\" & DirectorySrc.Name 
         
            If Not Directory.Exists(strDirectoryDesPath) Then
                Directory.CreateDirectory(strDirectoryDesPath)
            End If        Dim f, fs() As FileInfo        fs = DirectorySrc.GetFiles()        For Each f In fs
                File.Copy(f.FullName, strDirectoryDesPath & "\" & f.Name, True)
            Next        Dim DirSrc, Dirs() As DirectoryInfo
            Dirs = DirectorySrc.GetDirectories()        '递归调用自身
            For Each DirSrc In Dirs
                Dim DirDes As New DirectoryInfo(strDirectoryDesPath)
                CopyDerictory(DirSrc, DirDes)
            Next
        End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            CopyDerictory(New DirectoryInfo("C:\Documents and Settings\username\Favorites"), New DirectoryInfo("g:\temp"))
        End Sub
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ConanKid/archive/2005/08/18/458180.aspx
      

  5.   

    这个代码写的比较早,是VB.NET的.呵呵.我之前是学VB的.
      

  6.   

    用递归是正解,foreach也说到点子上了,具体的程序应该不是很难
      

  7.   

    Directory.GetDirectories()
    getfiles()
    这两个搞定。