日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【.Net实用方法总结】 整理并总结System.IO中Directory类及其方法介绍

發布時間:2023/12/20 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【.Net实用方法总结】 整理并总结System.IO中Directory类及其方法介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

🐋作者簡介:博主是一位.Net開發者,同時也是RPA和低代碼平臺的踐行者。
🐬個人主頁:會敲鍵盤的肘子
🐰系列專欄:.Net實用方法總結
🦀專欄簡介:博主針對.Net開發和C站問答過程中遇到的問題進行總結,形成本專欄,希望可以幫助到您解決問題。
🐶座右銘:總有一天你所堅持的會反過來擁抱你。


🌈寫在前面:

本文主要介紹System.IO命名空間的Directory 類,介紹其常用的方法和示例說明。


👉本文關鍵字:System.IO、Directory類、文件或目錄路徑信息、方法示例、C#

文章目錄

      • 1?? System.IO命名空間
      • 2?? Directory類
        • ? 定義
        • ? 常用方法
          • CreateDirectory(String) 在指定路徑中創建所有目錄和子目錄,除非它們已經存在
          • Delete(String) 從指定路徑刪除空目錄
          • Delete(String, Boolean) 刪除指定的目錄,并刪除該目錄中的所有子目錄和文件(如果表示)
          • EnumerateFiles(String) 返回指定路徑中的完整文件名的可枚舉集合
          • EnumerateFiles(String, String) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合
          • EnumerateFiles(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合,還可以搜索子目錄
          • Exists(String) 確定給定路徑是否引用磁盤上的現有目錄
          • GetCreationTime(String) 獲取目錄的創建日期和時間
          • GetCurrentDirectory() 獲取應用程序的當前工作目錄
          • GetDirectoryRoot(String) 返回指定路徑的卷信息、根信息或兩者同時返回
          • GetFiles 返回指定目錄中文件的名稱(包括其路徑)
          • GetLastAccessTime(String) 返回上次訪問指定文件或目錄的日期和時間
          • SetLastAccessTime(String, DateTime) 設置上次訪問指定文件或目錄的日期和時間
          • Move(String, String) 將文件或目錄及其內容移到新位置
        • ? 注解
        • ? 更多方法

1?? System.IO命名空間

.NET中的IO操作命名空間,包含允許讀寫文件數據流的類型以及提供基本文件和目錄支持的類型。

我們在.NET中的IO操作,經常需要調用一下幾個類。

  • FileStream類

? 文件流類,負責大文件的拷貝,讀寫。

  • Path類

? Path類中方法,基本都是對字符串(文件名)的操作,與實際文件沒多大關系。

  • File類

    File類可以進行一些對小文件拷貝、剪切操作,還能讀一些文檔文件。

  • Dirctory類

    目錄操作,創建文件、刪除目錄,獲取目錄下文件名等等。

2?? Directory類

? 定義

公開用于通過目錄和子目錄進行創建、移動和枚舉的靜態方法。 此類不能被繼承。

public static class Directory

? 常用方法

CreateDirectory(String) 在指定路徑中創建所有目錄和子目錄,除非它們已經存在
public static System.IO.DirectoryInfo CreateDirectory (string path);

參數

path

string

要創建的目錄。

返回

DirectoryInfo

一個表示在指定路徑的目錄的對象。 無論指定路徑的目錄是否已經存在,都將返回此對象。

示例

// Specify the directory you want to manipulate.string path = @"c:\MyDir";try{// Determine whether the directory exists.if (Directory.Exists(path)){Console.WriteLine("That path exists already.");return;}// Try to create the directory.DirectoryInfo di = Directory.CreateDirectory(path);Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));// Delete the directory.di.Delete();Console.WriteLine("The directory was deleted successfully.");}catch (Exception e){Console.WriteLine("The process failed: {0}", e.ToString());}finally {}

補充

創建任何目錄和所有目錄 path ,除非它們已存在,或者某些部分 path 無效。 如果目錄已存在,此方法不會創建新目錄,但它返回 DirectoryInfo 現有目錄的對象。

該 path 參數指定目錄路徑,而不是文件路徑。

Delete(String) 從指定路徑刪除空目錄
public static void Delete (string path);

參數

path

string

要移除的空目錄的名稱。 此目錄必須可寫且為空。

示例

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string subPath = @"C:\NewDirectory\NewSubDirectory";try{Directory.CreateDirectory(subPath);Directory.Delete(subPath);bool directoryExists = Directory.Exists(@"C:\NewDirectory");bool subDirectoryExists = Directory.Exists(subPath);Console.WriteLine("top-level directory exists: " + directoryExists);Console.WriteLine("sub-directory exists: " + subDirectoryExists);}catch (Exception e){Console.WriteLine("The process failed: {0}", e.Message);}}} }
Delete(String, Boolean) 刪除指定的目錄,并刪除該目錄中的所有子目錄和文件(如果表示)
public static void Delete (string path, bool recursive);

參數

path

string

要刪除的目錄的名稱。

recursive

bool

若要刪除 path 中的目錄、子目錄和文件,則為 true;否則為 false。

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string topPath = @"C:\NewDirectory";string subPath = @"C:\NewDirectory\NewSubDirectory";try{Directory.CreateDirectory(subPath);using (StreamWriter writer = File.CreateText(subPath + @"\example.txt")){writer.WriteLine("content added");}Directory.Delete(topPath, true);bool directoryExists = Directory.Exists(topPath);Console.WriteLine("top-level directory exists: " + directoryExists);}catch (Exception e){Console.WriteLine("The process failed: {0}", e.Message);}}} }
EnumerateFiles(String) 返回指定路徑中的完整文件名的可枚舉集合
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);

參數

path

string

要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

返回

IEnumerable

一個可枚舉集合,它包含目錄中 path 指定的文件的完整名稱(包括路徑)。

示例

以下示例演示如何檢索目錄中的所有文件并將其移動到新目錄。 移動文件后,它們不再存在于原始目錄中。

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string sourceDirectory = @"C:\current";string archiveDirectory = @"C:\archive";try{var txtFiles = Directory.EnumerateFiles(sourceDirectory);foreach (string currentFile in txtFiles){string fileName = currentFile.Substring(sourceDirectory.Length + 1);Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));}}catch (Exception e){Console.WriteLine(e.Message);}}} }

以下示例枚舉指定目錄中的文件,讀取文件的每一行,如果它包含字符串“Europe”,則顯示該行。

using System; using System.Collections.Generic; using System.Linq; using System.IO;class Program {static void Main(string[] args){try{// LINQ query for all files containing the word 'Europe'.var files = from file inDirectory.EnumerateFiles(@"\\archives1\library\")where file.ToLower().Contains("europe")select file;foreach (var file in files){Console.WriteLine("{0}", file);}Console.WriteLine("{0} files found.", files.Count<string>().ToString());}catch (UnauthorizedAccessException UAEx){Console.WriteLine(UAEx.Message);}catch (PathTooLongException PathEx){Console.WriteLine(PathEx.Message);}} }
EnumerateFiles(String, String) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);

參數

path

string

要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

searchPattern

string

要與 path 中的文件名匹配的搜索字符串。 此參數可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。例如,"*.txt"

返回

IEnumerable

一個可枚舉集合,它包含目錄中 path 指定的文件的完整名稱(包括路徑)。

示例

以下示例演示如何檢索目錄中的具有“.txt”擴展名文件并將其移動到新目錄。 移動文件后,它們不再存在于原始目錄中。

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string sourceDirectory = @"C:\current";string archiveDirectory = @"C:\archive";try{var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");foreach (string currentFile in txtFiles){string fileName = currentFile.Substring(sourceDirectory.Length + 1);Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));}}catch (Exception e){Console.WriteLine(e.Message);}}} }

以下示例枚舉具有“.txt”擴展名的指定目錄中的文件,讀取文件的每一行,并在包含字符串“Europe”的情況下顯示該行。

using System; using System.Linq; using System.IO;class Program {static void Main(string[] args){try{// LINQ query for all .txt files containing the word 'Europe'.var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")where file.ToLower().Contains("europe")select file;foreach (var file in files){Console.WriteLine("{0}", file);}Console.WriteLine("{0} files found.", files.Count<string>().ToString());}catch (UnauthorizedAccessException UAEx){Console.WriteLine(UAEx.Message);}catch (PathTooLongException PathEx){Console.WriteLine(PathEx.Message);}} }
EnumerateFiles(String, String, SearchOption) 返回指定路徑中與搜索模式匹配的完整文件名的可枚舉集合,還可以搜索子目錄
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);

參數

path

string

要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

searchPattern

string

要與 path 中的文件名匹配的搜索字符串。 此參數可以包含有效文本路徑和通配符(* 和 ?)的組合,但不支持正則表達式。例如,"*.txt"

searchOption

SearchOption

指定搜索操作是應僅包含當前目錄還是應包含所有子目錄的枚舉值之一。 默認值是 TopDirectoryOnly。

返回

IEnumerable

一個可枚舉集合,它包含目錄中 path 指定的文件的完整名稱(包括路徑)。

示例

以下示例演示如何檢索目錄及其子目錄中的所有文本文件,并將其移動到新目錄。 移動文件后,它們不再存在于原始目錄中。

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string sourceDirectory = @"C:\current";string archiveDirectory = @"C:\archive";try{var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);foreach (string currentFile in txtFiles){string fileName = currentFile.Substring(sourceDirectory.Length + 1);Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));}}catch (Exception e){Console.WriteLine(e.Message);}}} }
Exists(String) 確定給定路徑是否引用磁盤上的現有目錄
public static bool Exists (string? path);

參數

path

string

文件或目錄的路徑。

返回

bool

如果 path 指向現有目錄,則為 true;如果該目錄不存在或者在嘗試確定指定目錄是否存在時出錯,則為 false。

示例

以下示例在命令行上采用文件或目錄名稱數組,確定其名稱類型,并相應地處理它。

// For File.Exists, Directory.Exists using System; using System.IO; using System.Collections;public class RecursiveFileProcessor {public static void Main(string[] args){foreach(string path in args){if(File.Exists(path)){// This path is a fileProcessFile(path);}else if(Directory.Exists(path)){// This path is a directoryProcessDirectory(path);}else{Console.WriteLine("{0} is not a valid file or directory.", path);}}}// Process all files in the directory passed in, recurse on any directories// that are found, and process the files they contain.public static void ProcessDirectory(string targetDirectory){// Process the list of files found in the directory.string [] fileEntries = Directory.GetFiles(targetDirectory);foreach(string fileName in fileEntries)ProcessFile(fileName);// Recurse into subdirectories of this directory.string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);foreach(string subdirectory in subdirectoryEntries)ProcessDirectory(subdirectory);}// Insert logic for processing found files here.public static void ProcessFile(string path){Console.WriteLine("Processed file '{0}'.", path); } }
GetCreationTime(String) 獲取目錄的創建日期和時間
public static DateTime GetCreationTime (string path);

參數

path

string

目錄的路徑。

返回

DateTime

一個設置為指定目錄的創建日期和時間的結構。 該值用本地時間表示。

示例

以下示例獲取指定目錄的創建時間。

using System; using System.IO;class Test {public static void Main(){try{// Get the creation time of a well-known directory.DateTime dt = Directory.GetCreationTime(Environment.CurrentDirectory);// Give feedback to the user.if (DateTime.Now.Subtract(dt).TotalDays > 364){Console.WriteLine("This directory is over a year old.");}else if (DateTime.Now.Subtract(dt).TotalDays > 30){Console.WriteLine("This directory is over a month old.");}else if (DateTime.Now.Subtract(dt).TotalDays <= 1){Console.WriteLine("This directory is less than a day old.");}else{Console.WriteLine("This directory was created on {0}", dt);}}catch (Exception e){Console.WriteLine("The process failed: {0}", e.ToString());}} }
GetCurrentDirectory() 獲取應用程序的當前工作目錄
public static string GetCurrentDirectory ();

返回

string

一個字符串,該字符串包含當前工作目錄的絕對路徑且不以反斜杠 () 結尾。

示例

下面的示例演示如何使用 GetCurrentDirectory 方法。

using System; using System.IO;class Test {public static void Main(){try{// Get the current directory.string path = Directory.GetCurrentDirectory();string target = @"c:\temp";Console.WriteLine("The current directory is {0}", path);if (!Directory.Exists(target)){Directory.CreateDirectory(target);}// Change the current directory.Environment.CurrentDirectory = (target);if (path.Equals(Directory.GetCurrentDirectory())){Console.WriteLine("You are in the temp directory.");}else{Console.WriteLine("You are not in the temp directory.");}}catch (Exception e){Console.WriteLine("The process failed: {0}", e.ToString());}} }
GetDirectoryRoot(String) 返回指定路徑的卷信息、根信息或兩者同時返回
public static string GetDirectoryRoot (string path);

參數

path

string

文件或目錄的路徑。

返回

string

包含指定路徑的卷信息、根信息或同時包括這兩者的字符串。

示例

// This sample shows how to set the current directory and how to determine // the root directory. using System; using System.IO;namespace IOSamples {public class DirectoryRoot{public static void Main(){// Create string for a directory. This value should be an existing directory// or the sample will throw a DirectoryNotFoundException.string dir = @"C:\test"; try{//Set the current directory.Directory.SetCurrentDirectory(dir);}catch (DirectoryNotFoundException e){Console.WriteLine("The specified directory does not exist. {0}", e);}// Print to console the results.Console.WriteLine("Root directory: {0}", Directory.GetDirectoryRoot(dir));Console.WriteLine("Current directory: {0}", Directory.GetCurrentDirectory());}} } // The output of this sample depends on what value you assign to the variable dir. // If the directory c:\test exists, the output for this sample is: // Root directory: C:\ // Current directory: C:\test

此方法獲取由其返回GetFullPath的path完全限定路徑名稱,并返回根目錄信息。 不存在指定的路徑。

GetFiles 返回指定目錄中文件的名稱(包括其路徑)
public static string[] GetFiles (string path);

參數

path

string

要搜索的目錄的相對或絕對路徑。 此字符串不區分大小寫。

返回

string[]

一個包含指定目錄中的文件的完整名稱(包含路徑)的數組,如果未找到任何文件,則為空數組。

示例

以下示例演示如何使用 GetFiles 該方法從用戶指定的位置返回文件名。 此示例配置為捕獲此方法常見的所有錯誤。

// For Directory.GetFiles and Directory.GetDirectories // For File.Exists, Directory.Exists using System; using System.IO; using System.Collections;public class RecursiveFileProcessor {public static void Main(string[] args){foreach(string path in args){if(File.Exists(path)){// This path is a fileProcessFile(path);}else if(Directory.Exists(path)){// This path is a directoryProcessDirectory(path);}else{Console.WriteLine("{0} is not a valid file or directory.", path);}}}// Process all files in the directory passed in, recurse on any directories// that are found, and process the files they contain.public static void ProcessDirectory(string targetDirectory){// Process the list of files found in the directory.string [] fileEntries = Directory.GetFiles(targetDirectory);foreach(string fileName in fileEntries)ProcessFile(fileName);// Recurse into subdirectories of this directory.string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);foreach(string subdirectory in subdirectoryEntries)ProcessDirectory(subdirectory);}// Insert logic for processing found files here.public static void ProcessFile(string path){Console.WriteLine("Processed file '{0}'.", path); } }

補充

和EnumerateFilesGetFiles方法如下所示:使用EnumerateFiles時,可以在返回整個集合之前開始枚舉名稱集合;使用GetFiles時,必須等待返回整個名稱數組,然后才能訪問數組。 因此,使用許多文件和目錄時, EnumerateFiles 可以更高效。

GetFiles(String, String) 等重載方法與上文EnumerateFiles方法類似,不過多贅述。

GetLastAccessTime(String) 返回上次訪問指定文件或目錄的日期和時間
public static DateTime GetLastAccessTime (string path);

參數

path

string

要獲取其訪問日期和時間信息的文件或目錄。

返回

DateTime

一個結構,它被設置為上次訪問指定文件或目錄的日期和時間。 該值用本地時間表示。

SetLastAccessTime(String, DateTime) 設置上次訪問指定文件或目錄的日期和時間
public static void SetLastAccessTime (string path, DateTime lastAccessTime);

參數

path

string

要獲取其訪問日期和時間信息的文件或目錄。

lastAccessTime

DateTime

一個對象,它包含要為 path 的訪問日期和時間設置的值。 該值用本地時間表示。

示例

using System; using System.IO;class Test {public static void Main(){try{string path = @"c:\MyDir";if (!Directory.Exists(path)){Directory.CreateDirectory(path);}Directory.SetLastAccessTime(path, new DateTime(1985,5,4));// Get the last access time of a well-known directory.DateTime dt = Directory.GetLastAccessTime(path);Console.WriteLine("The last access time for this directory was {0}", dt);// Update the last access time.Directory.SetLastAccessTime(path, DateTime.Now);dt = Directory.GetLastAccessTime(path);Console.WriteLine("The last access time for this directory was {0}", dt);}catch (Exception e){Console.WriteLine("The process failed: {0}", e.ToString());}} }
Move(String, String) 將文件或目錄及其內容移到新位置
public static void Move (string sourceDirName, string destDirName);

參數

sourceDirName

string

要移動的文件或目錄的路徑。

destDirName

string

新位置 sourceDirName 的路徑或其內容。 如果 sourceDirName 是文件,那么 destDirName 也必須是文件名。

示例

以下示例演示如何將目錄及其所有文件移動到新目錄。 移動原始目錄后不再存在。

using System; using System.IO;namespace ConsoleApplication {class Program{static void Main(string[] args){string sourceDirectory = @"C:\source";string destinationDirectory = @"C:\destination";try{Directory.Move(sourceDirectory, destinationDirectory);}catch (Exception e){Console.WriteLine(e.Message);}}} }

補充

此方法使用指定 destDirName 的名稱創建新目錄,并將文件和目錄的內容 sourceDirName移動到新創建的目標目錄。 然后, sourceDirName 它會刪除該目錄。

如果嘗試將目錄移動到已存在的目錄,將發生一個 IOException 目錄。

? 注解

將 Directory 類用于典型的操作,例如復制、移動、重命名、創建和刪除目錄。

  • 若要創建目錄,請使用其中 CreateDirectory 一種方法。
  • 若要刪除目錄,請使用其中 Delete 一種方法。
  • 若要獲取或設置應用的當前目錄,請使用 GetCurrentDirectory 或 SetCurrentDirectory 方法。
  • 若要操作DateTime與創建、訪問和寫入目錄相關的信息,請使用和SetLastAccessTimeSetCreationTime等方法。

類的 Directory 靜態方法對所有方法執行安全檢查。 如果要多次重復使用對象,請考慮改用相應的實例方法 DirectoryInfo ,因為安全檢查并不總是必要的。

如果只執行一個與目錄相關的操作,則使用靜態 Directory 方法而不是相應的 DirectoryInfo 實例方法可能更有效。 大多數 Directory 方法都需要你正在操作的目錄的路徑。

備注

DirectoryInfo 實例方法將在下一篇博客中總結。

類的 Directory 靜態方法對所有方法執行安全檢查。 如果要多次重復使用對象,請考慮改用相應的實例方法 DirectoryInfo ,因為安全檢查并不總是必要的。

? 更多方法

更多方法請查閱官方文檔Directory 類。


?寫在結尾:

文章中出現的任何錯誤請大家批評指出,一定及時修改。

希望寫在這里的小伙伴能給個三連支持

總結

以上是生活随笔為你收集整理的【.Net实用方法总结】 整理并总结System.IO中Directory类及其方法介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。