本次問題是想要拷貝文件夾,但是找了一圈發(fā)現(xiàn)只有File有Copy或者FileInfo的CopyTo,并沒有Directory的拷貝操作方法。
針對C#中拷貝文件夾的方法就是先生成一個目標文件夾(destinationFolder)再將(soursefolder)中的文件依次拷貝到目標文件夾中,C#并沒有提供封裝好的方法將文件夾中的文件及其子文件夾整個的拷貝過去。
下述是CopyFold代碼:
1 using System.IO; 2 3 class Program 4 { 5 static void Main() 6 { 7 string sourceFolder = @""; 8 string destinationFolder = @""; 9 10 CopyFolder(sourceFolder, destinationFolder); 11 } 12 13 static void CopyFolder(string sourceFolder, string destinationFolder) 14 { 15 DirectoryInfo dir = new DirectoryInfo(sourceFolder); 16 17 Directory.CreateDirectory(destinationFolder); 18 19 FileInfo[] files = dir.GetFiles(); 20 21 foreach (FileInfo file in files) 22 { 23 string destinationFile = Path.Combine(destinationFolder, file.Name); 24 file.CopyTo(destinationFile, false); 25 } 26 27 DirectoryInfo[] subDirs = dir.GetDirectories(); 28 29 foreach (DirectoryInfo subdir in subDirs) 30 { 31 string destinationSubDir = Path.Combine(destinationFolder, subdir.Name); 32 CopyFolder(subdir.FullName, destinationSubDir); 33 } 34 } 35 }
但是上述代碼有一個問題,如果有多個sourcefolder和多個JPG或者TXT文件在一個父級文件夾下,將sourcefolder的路徑換成父級路徑后,多出的JPG和TXT也會同時被拷貝,所以需要對上述代碼做出一些更改來達到只拷貝指定的文件夾。
?
拓展:
?標題中的Directory和DirectoryInfo、File和FileInfo是沒有什么區(qū)別的,帶有Info字樣的提供了更加靈活的實例方法,請注意,??!實例 方法?。?!,在為查找資料之前我是將DirectoryInfo類直接和Directory類相同的方法帶調(diào)用用法,這是錯誤的。
Directory和File是靜態(tài)方法,所以可以直接File.Copy()、Directory.GetDirectories()文章來源:http://www.zghlxwxcb.cn/news/detail-710709.html
而DirectoryInfo和FileInfo是非靜態(tài)的,必須實例化后才能調(diào)用其中的方法,如DirectoryInfo.GetDirectories()是錯誤的!new?DirectoryInfo().GetDirectories()才可以。文章來源地址http://www.zghlxwxcb.cn/news/detail-710709.html
到了這里,關(guān)于【C#】【System.IO】關(guān)于拷貝文件夾以及(Directory和DirectoryInfo、File和FileInfo)的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!