在.Net中使用File.CreateText()也锁定文件,为什么?

Ger*_*ton 3 .net locking filewriter

我正在使用CreateText方法在"App1"中创建一个空文件(如下所示).然后尝试让另一个应用程序写入该文件,但它失败了b/c它被锁定了.直到我关闭"App1"才解锁

File.CreateText(path)
Run Code Online (Sandbox Code Playgroud)

要解决这个问题,我可以这样做:

Dim sw As StreamWriter = File.CreateText(path)
sw.Close()
Run Code Online (Sandbox Code Playgroud)

为什么只调用CreateText锁定文件?是否有一些隐含的编写器或文件编写器或正在创建的东西?

TEP

wom*_*omp 7

是的,它确实. CreateText()返回一个StreamWriter对象,该对象对您指定的文件是开放的.

如果你只是忽略了返回值,那就会StreamWriter挂起,保留你的文件.你真的需要在第二块代码中处理它.


And*_*est 5

是否有一些隐含的编写器或文件编写器或正在创建的东西?

创建StreamWriter,如您自己的代码所示.这就是为什么你可以将返回值赋给StreamWriter类型的变量.

这是我知道创建空文件的最简单方法:

File.CreateText(path).Close()
Run Code Online (Sandbox Code Playgroud)

编辑:

经过测试并确认可行.