在.Net 裡,C#沒有提供可以跨磁區移動資料夾的函數,所以只好自己寫啦!

是有一個指令叫做Move的啦,不過他只能限定你的資料夾移動範圍為

同一個磁區,也就是在C槽裡的資料夾就只能移到同樣為C槽裡,

在D槽裡的資料夾就只能移到同樣為D槽裡,所謂的跨磁區就是可從C移到E

用的方法就是先複製過去,然後再刪掉原來的資料夾

又因為這是用遞迴寫法,所以資料夾裡面的所有檔案和所有資料夾都可以移過去

只要傳入兩個變數,就是要移動的資料夾的位址跟要移動到哪的位址給函數就好了

阿如果目的位址裡要放的是原始資料夾的整個資料夾的話

就在呼叫時加這兩行就好

DirectoryInfo srcDirectory = new DirectoryInfo(SourcePath);

DestinationPath = DestinationPath + Path.DirectorySeparatorChar + srcDirectory.Name;

然後把DestinationPath 傳進去


public void CopyDirectory(string SourceFolder,string DestinationFolder)
{
if (Directory.Exists(SourceFolder) == true)
{
if (Directory.Exists(DestinationFolder) == false)
{
Directory.CreateDirectory(DestinationFolder);
}


DirectoryInfo srcDirectory = new DirectoryInfo(SourceFolder);


foreach (FileInfo fi in srcDirectory.GetFiles())
{
try
{
//FullName是檔案的完整路徑位址喔,Name才是檔案的名字
//Path.DirectorySeparatorChar是路徑裡的斜線啦
//最後面的true是是否覆蓋相同的檔案
File.Copy(fi.FullName, DestinationFolder + Path.DirectorySeparatorChar + fi.Name,true);

}
catch(Exception e)
{

}
}
foreach (DirectoryInfo di in srcDirectory.GetDirectories())
{
try
{
CopyDirectory(di.FullName, DestinationFolder + Path.DirectorySeparatorChar + di.Name);
}
catch(Exception e)
{

}
}
}
}

arrow
arrow
    全站熱搜

    welkingunther 發表在 痞客邦 留言(4) 人氣()