我是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();
}
}
答案 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
两次创建文件(CreateFile
和StreamWriter
,则第二次通话将被阻止。
答案 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了解更多信息