C# 为什么我在创建一个文件并尝试写入它之后会收到IOexception?

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(

我只是初学者,所以不要太苛刻。 尝试写入新创建的文件后,我收到IOexception

进程无法访问文件“C:\Users\Ivan\Desktop\Compilerv4liteXP\fcc\bin\Debug.default”,因为其他进程正在使用该文件

所以在方法开始时创建了文件(选中,它就在那里),但程序在catch阶段结束(精确地说,它返回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;
    }
创建文件:

    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句柄已关闭。