C# 该文件正被另一个进程使用,我必须关闭它吗?怎么用?
我正在使用一个文本文件来保存一些数据,以供以后使用。所以我要做的是检查文件是否存在,如果不存在,我会在需要时创建一个新文件。这给了我一个错误,即我的文件仍被另一个进程使用,但我不知道为什么会这样 我就是这样做的。在这里,我检查是否存在在程序运行时启动的文件:C# 该文件正被另一个进程使用,我必须关闭它吗?怎么用?,c#,text-files,C#,Text Files,我正在使用一个文本文件来保存一些数据,以供以后使用。所以我要做的是检查文件是否存在,如果不存在,我会在需要时创建一个新文件。这给了我一个错误,即我的文件仍被另一个进程使用,但我不知道为什么会这样 我就是这样做的。在这里,我检查是否存在在程序运行时启动的文件: private void CreateLastOpenFile() { if (!Directory.Exists(directory)) { Directory.Cr
private void CreateLastOpenFile()
{
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
if (!File.Exists(file))
{
File.Create(file);
}
}
现在,我在检查或创建新文件时向其中添加了一些数据(在我的程序中有两个位置):
这里可能出了什么问题?我从网上读了一些例子,但没有看到任何关于关闭任何文件的内容。File.Create正在创建一个文件流来锁定文件。你应该把它关上。实际上,您甚至不需要创建文件。File.WriteAlltext将为您完成此操作我建议您使用StreamWriter之类的类一步创建并填充文件中的数据,这样做应该不会有问题,下面是一个示例:
StreamWriter Swr = new StreamWriter(FilePath);
Swr.Write(Data);
Swr.Close();
Swr.Dispose();
//执行“关闭并处置”可以确保文件不再被锁定
您也可以使用File.WriteAllText(字符串路径,字符串数据),此方法不会锁定文件。您没有关闭
File.Create()
返回的流句柄
建议不要在您的案例中使用
File.Create()
。您可以只使用File.WriteAllText(文件,数据)代码>-根据MSDN文档,如果文件不存在,它将创建该文件,或者在文件存在时覆盖其内容。然后关闭文件流。试试这个。这将在文件创建期间关闭打开的流
if (!File.Exists(file))
{
FileStream str = File.Create(file);
str.Close();
}
如果您使用下面的方法将数据写入文本文件,则不需要检查文件是否存在以及是否创建它。“WriteAllText”自己处理所有这些事情。它将创建文件(如果不存在),写入数据并关闭它,或者覆盖文件(如果已经存在)。
File.WriteAllText(文件,数据) 如果使用writeAllText()或readAllText()方法,则不会使用close()方法,因为它们在读取或写入(上述方法)后关闭了文件
if (!File.Exists(file))
{
FileStream str = File.Create(file);
str.Close();
}