Directory 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
公開建立、移動和全面列舉目錄和子目錄的靜態方法。 此類別無法獲得繼承。
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 一般作業使用 類別,例如複製、移動、重新命名、建立和刪除目錄。
若要建立目錄,請使用其中 CreateDirectory 一種方法。
若要刪除目錄,請使用其中 Delete 一種方法。
若要取得或設定應用程式的目前目錄,請使用 GetCurrentDirectory 或 SetCurrentDirectory 方法。
若要操作DateTime與建立、存取和寫入目錄相關的資訊,請使用 和 SetCreationTime之類的SetLastAccessTime方法。
類別的 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 工作。
Directory 和 DirectoryInfo 不支援在 Windows 市集應用程式中使用。 如需如何在 Windows 市集應用程式中存取檔案和資料夾的詳細資訊,請參閱 存取 windows 市集應用程式) 存取資料和檔案 (。