C# 为什么我在创建一个文件并尝试写入它之后会收到IOexception?
我只是初学者,所以不要太苛刻。 尝试写入新创建的文件后,我收到IOexception 进程无法访问文件“C:\Users\Ivan\Desktop\Compilerv4liteXP\fcc\bin\Debug.default”,因为其他进程正在使用该文件 所以在方法开始时创建了文件(选中,它就在那里),但程序在catch阶段结束(精确地说,它返回false),并出现给定的异常 方法:C# 为什么我在创建一个文件并尝试写入它之后会收到IOexception?,c#,visual-studio-2010,serialization,file-io,ioexception,C#,Visual Studio 2010,Serialization,File Io,Ioexception,我只是初学者,所以不要太苛刻。 尝试写入新创建的文件后,我收到IOexception 进程无法访问文件“C:\Users\Ivan\Desktop\Compilerv4liteXP\fcc\bin\Debug.default”,因为其他进程正在使用该文件 所以在方法开始时创建了文件(选中,它就在那里),但程序在catch阶段结束(精确地说,它返回false),并出现给定的异常 方法: private static bool setDefaultValues() { if(
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;
}
为什么会发生这种情况以及如何修复它(通过修复,我正在考虑尝试创建一个新文件,如果成功了(或文件已经存在),则向它写入。file.create()
返回一个锁定文件的文件流。
您需要关闭()
它
更妙的是,完全去掉该函数,然后打开(path,FileMode.Create)
File.Create()
返回一个锁定文件的FileStream
。您需要
关闭()
它
更好的是,完全去掉该函数并
File.Open(path,FileMode.Create)
此方法创建的FileStream对象的默认FileShare值为None;在原始文件句柄关闭之前,其他进程或代码无法访问创建的文件。此方法创建的FileStream对象的默认FileShare值为None;在原始文件句柄关闭之前,其他进程或代码无法访问创建的文件ile句柄已关闭。