0

我现在正在学习 c#,我想检查文件是否存在。如果它存在,它应该加载并写入一个 xml 文件。如果它不存在,它应该创建它,然后它应该加载和写入 xml 文件。但是如果我点击我的按钮,就会出现错误:

“该进程无法访问该文件,因为它正被另一个进程使用。”

在这里你可以看到我的代码:

private void btnSave_Click(object sender, EventArgs e)
{
    XElement xmlnode = new XElement("Namespace",
            new XElement("RandomText1", textBox1.Text),
            new XElement("RandomText2", textBox2.Text),
            new XElement("RandomText3", textBox3.Text)
    );

    XElement xmlFile;
    try
    {
        xmlFile = XElement.Load("testsave.xml");
        xmlFile.Add(xmlnode);
    }
    catch (XmlException)
    {
        xmlFile = new XElement("Test", xmlnode);
    }

    xmlFile.Save("testsave.xml");
    DataSet ds = new DataSet();
    ds.ReadXml("testsave.xml");
    DataTable dt = ds.Tables[0];
    dataGridView1.DataSource = dt;
}

private void Form1_Load(object sender, EventArgs e)
{
    if (!File.Exists("testsave.xml"))
    {
        File.Create("testsave.xml");
    }
}
4

2 回答 2

6

问题是File.Create创建一个文件并将FileStream打开的文件返回给您。因此,当您稍后尝试访问它时,您会遇到异常。您必须在以后使用它之前关闭它。

试试这个

using (File.Create("testsave.xml"))
{ }

或者

File.Create("testsave.xml").Close();
于 2013-09-24T08:12:32.907 回答
0

如果您在另一个程序中打开该文件,则会发生此错误。如果您在其他程序中打开它,请关闭它并再次运行您的应用程序

于 2013-09-24T08:11:47.880 回答