这是我的代码:
public static bool createFile(string dir) {
dir="c:\\e.bat";
System.IO.File.Create(dir);
if (System.IO.File.Exists(dir))
{
try
{
StreamWriter SW;
SW = System.IO.File.CreateText(dir);
SW.WriteLine("something ");
SW.Close();
}
catch (Exception e)
{
Console.Write(e.Message);
Console.ReadLine();
return false;
}
}
return true;
}
这里dir是当前目录。我正面临错误进程无法访问该文件,因为它正被另一个进程使用。我可以解决这个问题吗?
答案 0 :(得分:10)
您在方法的开头调用File.Create
- 这会返回一个保持打开状态的流。目前尚不清楚为什么你会这么说,但我建议你删除那条线。
您还应该使用using
语句,仅捕获特定的异常,使用适当的using
指令,并遵循.NET命名约定。例如:
using System.IO;
...
public static bool CreateFile(string file)
{
using (var writer = File.CreateText(file))
{
try
{
writer.WriteLine("something ");
}
catch (IOException e)
{
// TODO: Change the handling of this. It's weird at the moment
Console.Write(e.Message);
Console.ReadLine();
return false;
}
}
return true;
}
我已经删除了对现有文件的检查,因为之前的代码始终存在,因为您刚刚创建了它。
您还应该考虑使用File.WriteAllText
作为编写文件的简单方法。