熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#.NET實現文件夾的復制

2013-11-13 09:54:45  來源: .NET編程 

  NET只提供了文件的Copy方法但卻沒有提供文件夾的Copy方法經過一天的努力終於搞定現貼出主要代碼供大家參考歡迎大家提出建議 代碼如下:

  public int DirectoryName(string DirectoryPath)//獲取文件夾名截取\
        {
        int j = ;     char[] c = DirectoryPathToCharArray();
         for (int i = cLength ; i >= ; i)//從後面截取
         {
        j = i;
        if (c[i] == \\)
         {
        break;//遇\調處並返回\的位置
         }
        }
        return j+;
        }
        public void CopyDirectory(string DirectoryPathstring DirAddress)//復制文件夾
         {
            #region//遞歸
            string s = DirectoryPathSubstring(DirectoryName(DirectoryPath));//獲取文件夾名
             if (DirectoryExists(DirAddress + \\ + s))
            {
                DirectoryDelete(DirAddress + \\ + strue);//若文件夾存在不管目錄是否為空刪除
                 DirectoryCreateDirectory(DirAddress + \\ + s);//刪除後重新創建文件夾
            }
            else
             {
                 DirectoryCreateDirectory(DirAddress + \\ + s);//文件夾不存在創建
            }
            DirectoryInfo DirectoryArray = new DirectoryInfo(DirectoryPath);
            FileInfo[] Files = DirectoryArrayGetFiles();//獲取該文件夾下的文件列表
            DirectoryInfo[] Directorys = DirectoryArrayGetDirectories();//獲取該文件夾下的文件夾列表
            foreach (FileInfo inf in Files)//逐個復制文件
            {
                FileCopy(DirectoryPath + \\ + infName DirAddress + \\ + s + \\ + infName);
            }
            foreach (DirectoryInfo Dir in Directorys)//逐個獲取文件夾名稱並遞歸調用方法本身
            {
                CopyDirectory(DirectoryPath + \\ + DirName DirAddress + \\ + s);
            }
            #endregion
        }

  以上是已經通過檢驗成功的代碼是通過遞歸的方式來逐個復制文件和創建文件夾還一種方法是通過使用DOS命令行來實現的可是不知道為什麼同樣的命令行我在CMD中使用可以在程序中就不行呢請指教

  以下是代碼:

  #region
        //方法一:DOS命令:xcopy c:\docume~\andy e:\andy /s/e  未實現
         string s = DirectoryPathSubstring(DirectoryName(DirectoryPath));//獲取文件夾名
        DirectoryCreateDirectory(DirAddress + \\ + s);//創建文件夾
        SystemDiagnosticsProcess process = new SystemDiagnosticsProcess();
        processStartInfoFileName = cmd;
        processStartInfoArguments = xcopy \ + DirectoryPath + \ \ + DirAddress + \\ + s + \ /s/e;
        processStartInfoWindowStyle = SystemDiagnosticsProcessWindowStyleHidden;
        processStartInfoCreateNoWindow = true;
        processStartInfoUseShellExecute = false;
        processStartInfoRedirectStandardOutput = true;
        processStart();
        processWaitForExit();
        #endregion


From:http://tw.wingwit.com/Article/program/net/201311/11953.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.