我有一个方法将文本附加到文件.在我附加文本之前,我检查文件是否存在.如果它不存在我创建它然后继续如下所示.
if(!File.Exists(_someFile))
File.Create(_someFile);
using (StreamWriter file = File.AppendText(_someFile))
{
file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)
如果文件存在则没有问题.该文件将被更新.如果该文件不存在并且它被创建,则在使用'using'的行上抛出IO异常,表明另一个进程正在使用该文件.我尝试使用进程资源管理器来找出使用该文件的内容,结果是"不存在的进程".有谁知道发生了什么以及如何解决这个问题?
编辑:问题解决了
我第一次搜索时在这个网站上找不到关于我的问题的问题.我一发布问题,就在右边的"相关问题"中看到了确切的问题.链接到解决方案:使用File.Create()后由另一个进程使用的文件 很抱歉发布了一个副本.我的问题解决了.
发生这种情况是因为File.Create(_someFile);打开必须先关闭的文件流才能使用新创建的文件.试试这个:
if(!File.Exists(_someFile))
{
using (var stream = File.Create(_someFile))
}
using (StreamWriter file = File.AppendText(_someFile))
{
file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)
但实际上您不需要先检查并创建文件.如果文件不存在,StreamWriter将创建该文件,如果文件存在则将文本附加到文件中.
using (StreamWriter sw = new StreamWriter(_someFile, true))
{
file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3458 次 |
| 最近记录: |