C# 单独创建和打开文件会抛出 IOException

C# Creating and opening file in isolation throws IOException

我制作了这个小程序来演示我的问题。它创建文件,然后尝试在同一地址打开它。当它尝试打开文件时,抛出路径上的 IOException 共享冲突。为什么会这样?我可以看到正在创建文件。

using System;
using System.IO;

namespace FileTestProject
{
class MainClass
{
    private static string address = "/Users/jamessullivan/Desktop/testFile.dat";

    public static void Main ()
    {
        File.Create(address);
        FileStream file = File.Open(address, FileMode.Open);
    }
}
}

您可以在查看文档时发现问题。

虽然你的例子毫无意义,但这里有一个问题的解释。

Create.File(string) returns FileStream 包含称为文件句柄的非托管资源,因此您无法创建另一个应该包含相同句柄的 FileStream

因此,您应该在重新使用资源后释放它。

这是一个简单的概念:

using(File.Create(address))
{}

using(FileStream file = File.Open(address, FileMode.Open)
{
}