System.IO.IOException:'进程无法访问文件'

时间:2018-03-07 07:02:15

标签: c#

我是C#编程语言的新手。我一直在尝试开发出租传感器应用程序。导出输出文件时遇到问题(System.IO.IOException:另一个进程使用的文件)异常。我无法真正找到问题所在。我想在桌面上创建当前日期和时间的文本文件。这是我的代码:

            string dateAndTime = DateTime.Now.ToShortDateString() + "-" + DateTime.Now.ToShortTimeString();
            dateAndTime = dateAndTime.Replace('/', '-');
            dateAndTime = dateAndTime.Replace(':', '-');

            string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + dateAndTime + ".txt");
            if (!File.Exists(path))
            {
                var myFile = File.Create(path);
                TextWriter tw = new StreamWriter(path);
                tw.WriteLine(txtDateTym.Text + " , " + txtKQ.Text);//Creating file on given path if file was not created
                myFile.Close();

            }
            else if (File.Exists(path))
            {
                using (var tw = new StreamWriter(path, true))

                {
                    tw.WriteLine(txtDateTym.Text + " , " + txtKQ.Text);//writing real time data to text file
                    tw.Close();
                }
            }

2 个答案:

答案 0 :(得分:2)

首先,您应该改变创建路径的方式:

string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), dateAndTime + ".txt");

您会看到dateTime之前有逗号而不是加号。

其次,您应该使用从CreateFile返回的Stream作为StreamWriter构造函数的输入参数:

TextWriter tw = new StreamWriter(myFile);

或者只是忽略File.Create并使用myPath作为StreamWriter的输入。 StreamWriter将自己创建文件。

如果您使用myFile两次创建文件(CreateFileStreamWriter,则第二次通话将被阻止。

答案 1 :(得分:1)

   if (!File.Exists(path))
            {
                File.Create(path).Dispose();
                using (TextWriter tw = new StreamWriter(path))
                {
                     tw.WriteLine(txtDateTym.Text + " , " + txtKQ.Text);

                }

            }

ħ     File.Create(path)返回FileStream,它是文件的句柄 当您尝试创建StreamWriter时,已经处理了句柄

您还可以查看here了解更多信息