【发布时间】:2013-12-27 02:45:26
【问题描述】:
我只是初学者,所以不要苛刻。 尝试写入新创建的文件后出现 IOexception。
进程无法访问文件 'C:\Users\Ivan\Desktop\Compilerv4liteXP\fcc\bin\Debug.default',因为它正被另一个进程使用。
所以在方法文件开始时创建(检查,它就在那里),但程序结束(准确地说是返回 false)在 catch 阶段出现给定的异常。
方法:
private static bool setDefaultValues()
{
if(!createFile(defaultValuesPath))
return false;
File.Exists(defaultValuesPath);
DefaultValues dv = new DefaultValues(cygwinPath, userPath,bashPath,outputPath,outputGlobalPath,cygwinDownloadSite);
System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(DefaultValues));
try
{
using (StreamWriter file = new StreamWriter(defaultValuesPath))
{
writer.Serialize(file, dv);
}
}
catch (Exception e)
{
return false;
}
return true;
}
创建文件:
private static bool createFile(string s)
{
if (!File.Exists(s))
{
try
{
File.Create(s);
}
catch (Exception e)
{
return false;
}
}
return true;
}
为什么会发生以及如何修复它(通过修复我正在考虑尝试创建一个新文件,如果它成功(或文件已经存在)然后写入它。
【问题讨论】:
-
该方法创建的FileStream对象的FileShare默认值为None;在关闭原始文件句柄之前,没有其他进程或代码可以访问创建的文件。 msdn.microsoft.com/en-us/library/d62kzs03(v=vs.110).aspx
标签: c# visual-studio-2010 serialization file-io ioexception