Directory 類別

定義

公開建立、移動和全面列舉目錄和子目錄的靜態方法。 此類別無法獲得繼承。

public ref class Directory abstract sealed
public ref class Directory sealed
public static class Directory
public sealed class Directory
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
type Directory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Directory = class
Public Class Directory
Public NotInheritable Class Directory
繼承
Directory
屬性

範例

下列範例示範如何從目錄中擷取所有文字檔,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。

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);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

下列範例示範如何使用 EnumerateFiles 方法來從目錄中擷取文字檔的集合,然後在查詢中使用該集合來尋找包含 「Example」 的所有行。

using System;
using System.IO;
using System.Linq;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string archiveDirectory = @"C:\archive";

            var files = from retrievedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(retrievedFile)
                        where line.Contains("Example")
                        select new
                        {
                            File = retrievedFile,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine("{0} contains {1}", f.File, f.Line);
            }
            Console.WriteLine("{0} lines found.", files.Count().ToString());
        }
    }
}
open System.IO

let archiveDirectory = @"C:\archive"

let files = 
    query {
        for retrivedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories) do
        for line in File.ReadLines retrivedFile do
        where (line.Contains "file") 
        select 
            {| File = retrivedFile 
               Line = line |}
    }

for f in files do
    printfn $"{f.File} contains {f.Line}"
printfn "{Seq.length files} lines found."
Imports System.IO

Module Module1

    Sub Main()
        Dim archiveDirectory As String = "C:\archive"

        Dim files = From retrievedFile In Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                    From line In File.ReadLines(retrievedFile)
                    Where line.Contains("Example")
                    Select New With {.curFile = retrievedFile, .curLine = line}

        For Each f In files
            Console.WriteLine("{0} contains {1}", f.curFile, f.curLine)
        Next
        Console.WriteLine("{0} lines found.", files.Count.ToString())

    End Sub

End Module

下列範例示範如何將目錄及其所有檔案移至新目錄。 原始目錄在移動之後已不存在。

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);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"

try
    Directory.Move(sourceDirectory, destinationDirectory)
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\source"
        Dim destinationDirectory As String = "C:\destination"

        Try
            Directory.Move(sourceDirectory, destinationDirectory)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

備註

針對 Directory 一般作業使用 類別,例如複製、移動、重新命名、建立和刪除目錄。

類別的 Directory 靜態方法會對所有方法執行安全性檢查。 如果您要重複使用物件數次,請考慮改用 對應的實例方法 DirectoryInfo ,因為安全性檢查不一定是必要的。

如果您只執行一個目錄相關動作,使用靜態 Directory 方法,而不是對應的 DirectoryInfo 實例方法可能會更有效率。 大部分 Directory 的方法都需要您要操作之目錄的路徑。

注意

在接受字串 path 參數的成員中,該路徑的格式必須正確或引發例外狀況。 例如,如果路徑為完整,但開頭為空格 (「 c:\temp」) ,則不會修剪路徑字串,因此路徑會被視為格式不正確且引發例外狀況。 此外,路徑或路徑組合不能完整兩次。 例如,「c:\temp c:\windows」 也會引發例外狀況。 使用接受路徑字串的方法時,請確定您的路徑格式正確。 如需相關資訊,請參閱Path

在接受路徑的成員中,路徑可以參考檔案或目錄。 您可以使用伺服器和共用名稱稱的完整路徑、相對路徑或通用命名慣例 (UNC) 路徑。 例如,下列所有都是可接受的路徑:

  • C# 中的 「c:\\MyDir」 或 Visual Basic 中的 「c:\MyDir」。

  • C# 中的 「MyDir\\MySubdir」 或 Visual Basic 中的 「MyDir\MySubDir」。

  • C# 中的 「\\\\MyServer\\MyShare」 或 Visual Basic 中的 「\\MyServer\MyShare」。

根據預設,會將新目錄的完整讀取/寫入存取權授與所有使用者。 不過,應用程式必須具有正確的安全性,才能存取現有的目錄。

若要要求目錄及其所有子目錄的許可權,請使用目錄分隔符號結束路徑字串。 (例如,「C:\Temp\」 會授與 C:\Temp\ 及其所有子目錄的存取權。) 若要只要求特定目錄的許可權,請使用句號結束路徑字串。 (例如,「C:\Temp\.」 只會授與其子目錄的存取權。)

在接受 searchPattern 參數的成員中,搜尋字串可以是常值字元和兩個萬用字元的任何組合:* 和 ?。 此參數無法辨識正則運算式。 如需詳細資訊,請參閱 EnumerateDirectories(String, String) 方法或任何其他使用 searchPattern 參數的方法。

如需一般 I/O 工作的清單,請參閱 一般 I/O 工作

DirectoryDirectoryInfo 不支援在 Windows 市集應用程式中使用。 如需如何在 Windows 市集應用程式中存取檔案和資料夾的詳細資訊,請參閱 存取 windows 市集應用程式) 存取資料和檔案 (

方法

CreateDirectory(String)

在指定的路徑建立所有目錄和子目錄 (如果這些目錄尚不存在)。

CreateDirectory(String, DirectorySecurity)

在指定的路徑中建立所有目錄 (如果尚不存在),同時套用指定的 Windows 安全性。

CreateDirectory(String, UnixFileMode)

除非已存在目錄和子目錄,否則會使用指定的許可權,在指定的路徑中建立所有目錄和子目錄。

CreateSymbolicLink(String, String)

建立由 識別的 path 目錄符號連結,指向 pathToTarget

CreateTempSubdirectory(String)

在目前使用者的臨時目錄中,建立唯一命名的空白目錄。

Delete(String)

從指定的路徑刪除空目錄。

Delete(String, Boolean)

刪除指定目錄,並且若有指示,則刪除目錄中的任何子目錄和檔案。

EnumerateDirectories(String)

傳回指定路徑中目錄全名的可列舉集合。

EnumerateDirectories(String, String)

傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合。

EnumerateDirectories(String, String, EnumerationOptions)

傳回在所指定路徑中符合搜尋模式之目錄完整名稱的可列舉集合,並選擇性地搜尋子目錄。

EnumerateDirectories(String, String, SearchOption)

傳回指定路徑中符合搜尋模式之目錄全名的可列舉集合,並選擇性地搜尋子目錄。

EnumerateFiles(String)

傳回指定路徑中完整檔名的可列舉集合。

EnumerateFiles(String, String)

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合。

EnumerateFiles(String, String, EnumerationOptions)

傳回在所指定路徑中符合搜尋模式與列舉選項之完整檔案名稱的可列舉集合,並選擇性地搜尋子目錄。

EnumerateFiles(String, String, SearchOption)

傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合,並選擇性地搜尋子目錄。

EnumerateFileSystemEntries(String)

傳回指定之路徑中檔案名稱及目錄名稱的可列舉集合。

EnumerateFileSystemEntries(String, String)

傳回所指定路徑中符合搜尋模式之檔案名稱及目錄名稱的可列舉集合。

EnumerateFileSystemEntries(String, String, EnumerationOptions)

傳回所指定路徑中符合搜尋模式與列舉選項之檔案名稱及目錄名稱的可列舉集合。

EnumerateFileSystemEntries(String, String, SearchOption)

傳回指定之路徑中符合搜尋模式之檔名和目錄名稱的可列舉集合,並選擇性地搜尋子目錄。

Exists(String)

判斷指定路徑是否參考磁碟上的現有目錄。

GetAccessControl(String)

取得 DirectorySecurity 物件,該物件會封裝指定目錄的存取控制清單 (ACL) 項目。

GetAccessControl(String, AccessControlSections)

取得 DirectorySecurity 物件,該物件會為指定的目錄封裝指定類型的存取控制清單 (ACL) 項目。

GetCreationTime(String)

取得目錄的建立日期和時間。

GetCreationTimeUtc(String)

取得目錄的建立日期和時間,格式為國際標準時間 (UTC)。

GetCurrentDirectory()

取得應用程式的目前工作目錄。

GetDirectories(String)

傳回指定之目錄中的子目錄名稱 (包括其路徑)。

GetDirectories(String, String)

傳回指定目錄中符合指定搜尋模式的子目錄名稱 (包括檔案的路徑)。

GetDirectories(String, String, EnumerationOptions)

傳回所指定目錄中符合所指定搜尋模式與列舉選項的子目錄名稱 (包含其路徑)。

GetDirectories(String, String, SearchOption)

傳回指定目錄中符合指定搜尋模式之子目錄 (包含其路徑) 的名稱,並且選擇性地搜尋子目錄。

GetDirectoryRoot(String)

傳回指定路徑的磁碟區資訊、根目錄資訊或兩者。

GetFiles(String)

傳回指定目錄中的檔案名稱 (包括路徑)。

GetFiles(String, String)

傳回指定目錄中符合指定搜尋模式的檔案名稱 (包括檔案的路徑)。

GetFiles(String, String, EnumerationOptions)

傳回所指定目錄中符合所指定搜尋模式與列舉選項的檔案名稱 (包含其路徑)。

GetFiles(String, String, SearchOption)

傳回指定目錄中符合指定搜尋模式的檔案名稱 (包括檔案的路徑),並使用值判斷是否搜尋子目錄。

GetFileSystemEntries(String)

傳回指定路徑中所有檔案和子目錄的名稱。

GetFileSystemEntries(String, String)

傳回符合指定路徑中搜尋模式的目錄名稱,及檔案名稱的陣列。

GetFileSystemEntries(String, String, EnumerationOptions)

傳回所指定路徑中符合搜尋模式與列舉選項之檔案名稱及目錄名稱的陣列。

GetFileSystemEntries(String, String, SearchOption)

傳回指定之路徑中符合搜尋模式之所有檔名和目錄名稱的陣列,並選擇性地搜尋子目錄。

GetLastAccessTime(String)

傳回指定檔案或目錄上次被存取的日期和時間。

GetLastAccessTimeUtc(String)

傳回上次存取指定檔案或目錄的日期和時間,格式為國際標準時間 (UTC)。

GetLastWriteTime(String)

傳回指定檔案或目錄上次被寫入的日期和時間。

GetLastWriteTimeUtc(String)

傳回上次寫入指定檔案或目錄的日期和時間,格式為國際標準時間 (UTC)。

GetLogicalDrives()

擷取此電腦上的邏輯磁碟機名稱,格式為 「 < drive letter > :\」。

GetParent(String)

擷取指定路徑的父目錄,包括絕對和相對路徑兩者。

Move(String, String)

移動檔案或目錄和其內容到新位置。

ResolveLinkTarget(String, Boolean)

取得指定目錄連結的目標。

SetAccessControl(String, DirectorySecurity)

DirectorySecurity 物件描述的存取控制清單 (ACL) 項目套用至指定的目錄。

SetCreationTime(String, DateTime)

設定指定檔案或目錄建立的日期和時間。

SetCreationTimeUtc(String, DateTime)

設定指定檔案或目錄的建立日期和時間,格式為國際標準時間 (UTC)。

SetCurrentDirectory(String)

將應用程式的目前工作目錄設定為指定目錄。

SetLastAccessTime(String, DateTime)

設定指定檔案或目錄上次被存取的日期和時間。

SetLastAccessTimeUtc(String, DateTime)

設定上次存取指定檔案或目錄的日期和時間,格式為國際標準時間 (UTC)。

SetLastWriteTime(String, DateTime)

設定目錄上次被寫入的日期和時間。

SetLastWriteTimeUtc(String, DateTime)

設定上次寫入目錄的日期和時間,格式為國際標準時間 (UTC)。

適用於

另請參閱