我在 Windows Server 中有一个文件夹,其中包含子文件夹和 ?50000 个文件。当我单击鼠标右键并选择删除(或 shift+delete)时 - 所有文件将在 10-20 秒内删除。
当我使用代码删除文件时 – 1500-4000 秒。
删除大量文件- 不适合我。
我的代码:
string folderPath = @"C://myFolder";
DirectoryInfo folderInfo = new DirectoryInfo(folderPath);
folderInfo.Delete(true); // true - recursive, with sub-folders
Run Code Online (Sandbox Code Playgroud)
如何更快地删除文件?
删除文件的一种更快的方法是使用 Windows 函数而不是 .NET 函数。
您需要先导入函数:
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool DeleteFile(string lpFileName);
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
string[] files = Directory.EnumerateFiles(path, "*". SearchOption.AllDirectories);
foreach (string file in files)
{
DeleteFile(file);
}
Run Code Online (Sandbox Code Playgroud)
一旦文件被删除,这是使用托管 API 最慢的部分,您可以调用Directory.DeleteFolder(path, true)删除空文件夹。
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |