File.Delete(String) 方法 (System.IO)

File.Delete(String) 方法 (System.IO)

删除指定的文件。

public:

static void Delete(System::String ^ path);

public static void Delete (string path);

static member Delete : string -> unit

Public Shared Sub Delete (path As String)

参数

path

String

要删除的文件的名称。 不支持通配符。

例外

ArgumentException

.NET Framework 和 2.1 之前的 .NET Core 版本:path是一个零长度字符串,仅包含空格,或者包含一个或多个无效字符。 你可以使用 GetInvalidPathChars() 方法查询无效字符。

ArgumentNullException

path 为 null。

DirectoryNotFoundException

指定的路径无效(例如,它位于未映射的驱动器上)。

IOException

指定的文件正在使用。

- 或 -

在文件中存在开放句柄,并且操作系统是 Windows XP 或更早的版本。 枚举目录和文件可能会导致此开放句柄出现。 有关详细信息,请参阅如何:枚举目录和文件。

NotSupportedException

path 的格式无效。

PathTooLongException

指定的路径和/或文件名超过了系统定义的最大长度。

UnauthorizedAccessException

调用方没有所要求的权限。

- 或 -

该文件是正在使用的可执行文件。

- 或 -

path 是一个目录。

- 或 -

path 指定了一个只读文件。

示例

以下示例将文件组复制到 C:\archives\2008 备份文件夹,然后将其从源文件夹删除。

string sourceDir = @"c:\current";

string backupDir = @"c:\archives\2008";

try

{

string[] picList = Directory.GetFiles(sourceDir, "*.jpg");

string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

// Copy picture files.

foreach (string f in picList)

{

// Remove path from the file name.

string fName = f.Substring(sourceDir.Length + 1);

// Use the Path.Combine method to safely append the file name to the path.

// Will overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);

}

// Copy text files.

foreach (string f in txtList)

{

// Remove path from the file name.

string fName = f.Substring(sourceDir.Length + 1);

try

{

// Will not overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));

}

// Catch exception if the file was already copied.

catch (IOException copyError)

{

Console.WriteLine(copyError.Message);

}

}

// Delete source files that were copied.

foreach (string f in txtList)

{

File.Delete(f);

}

foreach (string f in picList)

{

File.Delete(f);

}

}

catch (DirectoryNotFoundException dirNotFound)

{

Console.WriteLine(dirNotFound.Message);

}

let sourceDir = @"c:\current"

let backupDir = @"c:\archives\2008"

try

let picList = Directory.GetFiles(sourceDir, "*.jpg")

let txtList = Directory.GetFiles(sourceDir, "*.txt")

// Copy picture files.

for f in picList do

// Remove path from the file name.

let fName = f.Substring(sourceDir.Length + 1)

// Use the Path.Combine method to safely append the file name to the path.

// Will overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true)

// Copy text files.

for f in txtList do

// Remove path from the file name.

let fName = f.Substring(sourceDir.Length + 1)

try

// Will not overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

// Catch exception if the file was already copied.

with

| :? IOException as copyError -> printfn $"{copyError.Message}"

// Delete source files that were copied.

for f in txtList do

File.Delete f

for f in picList do

File.Delete f

// Catch exception if the file was already copied.

with

| :? DirectoryNotFoundException as dirNotFound -> printfn $"{dirNotFound.Message}"

Dim sourceDir As String = "c:\current"

Dim backupDir As String = "c:\archives\2008"

Try

Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")

Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

' Copy picture files.

For Each f As String In picList

'Remove path from the file name.

Dim fName As String = f.Substring(sourceDir.Length + 1)

' Use the Path.Combine method to safely append the file name to the path.

' Will overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)

Next

' Copy text files.

For Each f As String In txtList

'Remove path from the file name.

Dim fName As String = f.Substring(sourceDir.Length + 1)

Try

' Will not overwrite if the destination file already exists.

File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

' Catch exception if the file was already copied.

Catch copyError As IOException

Console.WriteLine(copyError.Message)

End Try

Next

For Each f As String In txtList

File.Delete(f)

Next

For Each f As String In picList

File.Delete(f)

Next

Catch dirNotFound As DirectoryNotFoundException

Console.WriteLine(dirNotFound.Message)

End Try

注解

指定一个文件名,其中包含参数的任何相对或绝对路径信息 path 。 不能包含通配符。 相对路径信息解释为相对于当前工作目录。 若要获取当前工作目录,请参阅 GetCurrentDirectory。

如果要删除的文件不存在,则不会引发异常。

有关常见 I/O 任务的列表,请参阅 常见 I/O 任务。

适用于

另请参阅

文件和流 I/O

从文件读取文本

如何:将文本写入文件