最近遇到了一个 .Net 6 的大问题 (我感觉是一个 Bug)。

Directory.Delete(path, recursive: true)pnpmnode_modules

执行结果如下:

(卧槽,执行了这么长时间,还敢报错?微软自己的编程语言和标准库都不能完美处理微软自己的系统?后来大概看了下源码,代码倒是挺多,但就是删不成功。。)

又搜了一个普通的递归删除文件的代码(因为系统只能删除空文件夹,所以必须先删文件,再删文件夹)。

执行结果如下:

Directory.Delete

搞到这里我已经对 C# 绝望了。

反正是自己的小工具,那我换个语言写吧。

Javacommons-lang3hutool
易语言
NodeJsrimrafNodeJs
Pythonshutil.rmtree(path)os.remove
Golangos.RemoveAll
C++
Ruststd::fs::remove_dir_all

于是有了下面的 Rust 代码

Cargo.toml

Rust 代码

C# 调用一下

编译 Release,测试两遍,完美删除 ,速度也很稳定和 Rust 几乎相同,

150 KB

这个 DLL 可以在任何语言中用了.


最后再来个 Java 调用的例子:

DLL 放到 resources 目录下