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)
{
}
我制作了这个小程序来演示我的问题。它创建文件,然后尝试在同一地址打开它。当它尝试打开文件时,抛出路径上的 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)
{
}