我正在使用文本文件将某些数据用于以后的目的。所以我要做的是检查文件是否存在,如果不是,我在需要时创建一个新文件。这给了我一个错误,说我的文件仍在被不同的进程使用,但我不确定为什么会这样。
我就是这样做的。在这里,我正在检查程序运行时是否存在文件:
private void CreateLastOpenFile()
{
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
if (!File.Exists(file))
{
File.Create(file);
}
}
现在,我在检查或创建一个新文件时添加了一些数据(我在我的程序中有两个位置):
CreateLastOpenFile();
File.WriteAllText(file, data);
这里有什么问题?我已经从网上读过一些例子,但没有看到任何关于关闭任何文件的内容。
答案 0 :(得分:4)
File.Create正在创建一个锁定文件的FileStream。你应该关闭它。实际上,您甚至不需要创建文件。 File.WriteAlltext将为您完成
答案 1 :(得分:4)
试试这个。这将在文件创建期间关闭打开的流
if (!File.Exists(file))
{
FileStream str = File.Create(file);
str.Close();
}
答案 2 :(得分:2)
我建议你一步一步地创建和填充文件数据,使用像StreamWriter这样的类来允许你处理类,你应该没有问题这样做,这是一个例子:
StreamWriter Swr = new StreamWriter(FilePath);
Swr.Write(Data);
Swr.Close();
Swr.Dispose();
//执行关闭和处理,确保文件不再被锁定
您还可以使用File.WriteAllText(字符串Path,字符串Data),此方法不会锁定文件。
答案 3 :(得分:2)
您没有关闭File.Create()
返回的流句柄。
建议您不要在案件中使用File.Create()
。您可以使用File.WriteAllText(file, data);
- 根据MSDN文档,如果文件不存在,则创建文件或在文件存在时覆盖内容。之后关闭文件流。
答案 4 :(得分:1)
如果您使用以下方法将数据写入文本文件,则无需检查文件是否存在,如果不存在则创建文件。 “WriteAllText”自己处理所有这些事情。它将创建文件(如果不存在),写入数据并关闭它,或覆盖文件(如果已存在)。 File.WriteAllText(文件,数据);
答案 5 :(得分:0)
如果您使用writeAllText()或readAllText()方法,则不使用close()方法,因为它们在读取或写入(上述方法之后)后关闭了文件