为什么我在创建文件并尝试写入文件后得到IOexception?

时间:2013-12-09 20:22:49

标签: c# visual-studio-2010 serialization file-io ioexception

我只是初学者所以不要太苛刻。 尝试写入新创建的文件后,我收到了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;
    }

为什么会发生这种情况以及如何修复(并且通过修复我正在考虑尝试创建一个新文件,如果它成功(或文件已经存在),则写入它。

1 个答案:

答案 0 :(得分:3)

File.Create()会返回锁定文件的FileStream 您需要Close()

更好的是,完全摆脱这个功能File.Open(path, FileMode.Create)