DataGridView上的IOException写入文本文件C#

时间:2009-08-25 11:02:14

标签: c# datagridview text-files ioexception filewriter

早上好,

我的C#代码中的方法存在一些问题,应该能够将DataGridView保存到.txt文件中。

代码如下:

private void saveToTxt_Btn_Click(object sender, EventArgs e)
    {
        filenameText.Text = serviceDataGrid.Rows.Count.ToString();
        //string toOutFile = @"C:\" + filenameText.Text+".txt";
        string toOutFile = @"C:\hello.txt";

        FileStream toFile = new FileStream(toOutFile, FileMode.Create);

        TextWriter toText = new StreamWriter(toOutFile);

        int count = serviceDataGrid.Rows.Count;

        toText.WriteLine("\t\t" + filenameText.Text);
        toText.WriteLine("\t\t" + directoryText.Text+"\n\n");

        for (int row = 0; row < count-1; row++)
        {
            toText.WriteLine(serviceDataGrid.Rows[row].Cells[0].Value.ToString());
        }
        toText.Close();
        toFile.Close();
    }

以下行返回错误:

TextWriter toText = new StreamWriter(toOutFile);
  

IOException未处理。   该进程无法访问文件'C:\ hello.txt',因为它正由另一个进程使用。

我不完全确定问题是什么,但它表明FileStream和TextWriter之间存在冲突。

有人可以对此有所了解吗? 此致

3 个答案:

答案 0 :(得分:4)

你打开它两次;完全丢失所有toFile内容 ,并在using周围使用toText

    using(TextWriter toText = File.CreateText(toOutFile))
    {
        toText.WriteLine("\t\t" + filenameText.Text);
        toText.WriteLine("\t\t" + directoryText.Text+"\n\n");

        foreach(DataGridViewRow row in serviceDataGrid.Rows)
        {
            toText.WriteLine(row.Cells[0].Value.ToString());
        }
    }

也;你的意思是WriteLine(... + "\n\n")吗?

答案 1 :(得分:1)

当您使用线

TextWriter toText = new StreamWriter(toOutFile);

不需要以下行,因为如果文件不存在,StreamWriter(string filePath)构造函数将创建一个文件。

FileStream toFile = new FileStream(toOutFile, FileMode.Create);

Marc是对的,你已经在其他实例变量中打开了一次文件,你再也无法打开了。

答案 2 :(得分:0)

我已经监督你用文件名打开编写器。 我以为你做到了 TextWriter toText = new StreamWriter(toFile);