在 Appdata 文件夹中创建文本文件时出现异常,它说文件正在被另一个进程使用

Posted

技术标签:

【中文标题】在 Appdata 文件夹中创建文本文件时出现异常,它说文件正在被另一个进程使用【英文标题】:Getting exception while Creation a text file in Appdata folder, its saying File it is being used by another process 【发布时间】:2014-12-05 07:31:57 【问题描述】:

我正在 Appdata 文件夹中写入一个文本文件,我正在创建一个文件夹并创建一个文本文件,在下一行中,我正在通过 StreamWriter 将文本写入文件。但是在这里我遇到了以下异常。

该进程无法访问文件 'C:\sdfdfg\sdfsd\AppData\Roaming\MyFolder\myFile.txt',因为它正被另一个进程使用。

我在创建文件时遇到这个异常,如果我第二次运行应用程序而不是应用程序将文本写入同一个文件。

我的代码如下

StringBuilder sb=new StringBuilder();
if (!File.Exists(filePath))

     File.Create(filePath);
     sb.AppendLine(line);
     using (StreamWriter writer = new StreamWriter(filePath, true))
     
         writer.Write(sb.ToString());
         writer.Close();
     

我尝试了 File 的另一个函数 File.WriteAllText(filePath, textToWrite);但它的执行方式也与上面 StreamWriter 的行为方式相同。

【问题讨论】:

【参考方案1】:

最简单的解决方案是忽略File.Create()

The constructor you're using for your StreamWriter 会在文件不存在时创建它。

另一种选择是将File.Create() 返回的FileStream 传递给StreamWriter 的适当构造函数。

【讨论】:

谢谢你现在我已经删除了 File.Create(filePath); StreamWriter 将写入文件。,我犯了一个如此愚蠢的错误...... :(,无论如何谢谢你 Willem van Rumpt。干杯!

以上是关于在 Appdata 文件夹中创建文本文件时出现异常,它说文件正在被另一个进程使用的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 java 中创建 AWT 窗口时出现异常

尝试在openGL中创建空白窗口时出现异常输出

当我尝试在 /Library/Application Support/ 中创建文件夹“efiLinq”时出现权限被拒绝错误

错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”

如何在 %appdata% 中创建文件夹,在其中创建 .bat 文件,然后执行?

在 Mac OS X 中创建反应应用程序时出现 EACCESS 权限错误