我只是初学者所以不要太苛刻。 尝试写入新创建的文件后,我收到了IOexception。
该进程无法访问文件'C:\ Users \ Ivan \ Desktop \ Compilerv4liteXP \ fcc \ bin \ Debug.default',因为它正由另一个进程使用。
所以在方法文件的开头创建(检查,它就在那里),但程序在捕获阶段结束(它准确地返回false)给定的异常。
方法:
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;
}
CREATEFILE:
private static bool createFile(string s)
{
if (!File.Exists(s))
{
try
{
File.Create(s);
}
catch (Exception e)
{
return false;
}
}
return true;
}
为什么会发生这种情况以及如何修复(并且通过修复我正在考虑尝试创建一个新文件,如果它成功(或文件已经存在),则写入它。
答案 0 :(得分:3)
File.Create()
会返回锁定文件的FileStream
您需要Close()
。
更好的是,完全摆脱这个功能File.Open(path, FileMode.Create)
。