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\.”仅授予对 C:\Temp\ 的访问权限,而不向其子目录授予访问权限。)
在接受参数的成员中,搜索字符串可以是文本字符和两个 searchPattern
通配符的任意组合:* 和 ?。 此参数不识别正则表达式。 有关详细信息,请参阅 EnumerateDirectories(String, String) 方法或使用 参数的任何其他方法 searchPattern
。
有关常见 I/O 任务的列表,请参阅 常见 I/O 任务。
Directory 和 DirectoryInfo 不支持在 Windows 应用商店应用中使用。 有关如何访问 Windows 应用商店应用中的文件和文件夹的信息,请参阅 访问 windows 应用商店应用 (数据和文件) 。