2012年11月12日 星期一

[C#] 複製資料夾檔案&重新命名檔案

寫了一小段時間的複製實體檔案 code,
缺點是寫的蠻硬的...
路徑規則是固定死得就那樣,
不知道還能怎樣改會比較好...



主要使用兩個 function 來完成這件事~
要執行的話呼叫 XCopyFile 就好~


/// <summary>
    /// 複製所有範例檔案至另一目錄
    /// </summary>
    public static void XCopyFile(int buId, string projectName)
    {
        string fileUploadPath = System.Configuration.ConfigurationManager.AppSettings["DefaultFilePath"];   // 預設路徑
        string sourcePath = string.Format("{0}\\test", fileUploadPath);
        string destinationPath = string.Format("{0}\\{1}\\{2}", fileUploadPath, buService.GetName(buId).BU_NAME, projectName);
 
        // 找到 source 底下所有的檔案
        string[] sourceFiles = Directory.GetFiles(sourcePath);
        string[] sourceDirectories = Directory.GetDirectories(sourcePath);
 
        CopyDirectory(sourceFiles, destinationPath);
 
        foreach (string folder in sourceDirectories)
        {
            string[] subSourceFiles = Directory.GetFiles(folder);
            CopyDirectory(subSourceFiles, destinationPath + "\\" + folder.Split(new char[] { '\\', ':' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault());
        }
 
        RenameProjectXMLFile(destinationPath,projectName);  // 重新命名 xml 檔     }  
/// <summary>
    /// 複製單一目錄底下所有檔案
    /// </summary>
    /// <param name="sourceFiles"></param>
    /// <param name="destinationPath"></param>
    /// <param name="subFolder"></param>
    public static void CopyDirectory(string[] sourceFiles, string destinationPath)
    {
        CheckFolder(destinationPath);
 
        foreach (string item in sourceFiles)
        {
            string fileName = item.Split(new char[] { '\\', ':' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
            File.Copy(item, destinationPath + "\\" + fileName, true);
        }
    }

重新命名檔案名稱 ----
public static void RenameProjectXMLFile(string destinationPath, string projectName)    {
      string sampleFileName = "\\TEST.xml";         
      File.Move(destinationPath + sampleFileName, destinationPath + "\\build_" + projectName + ".xml");    
}

沒有留言:

張貼留言