1

みんなおはよう、

DataGridView を .txt ファイルに保存できるようにする C# コードのメソッドにいくつか問題があります。

コードは次のとおりです。

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 の間に競合があることを示唆しています。

誰でもこれに光を当てることができますか?よろしく

4

3 に答える 3

4

あなたはそれを2回開いています。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")ですか?

于 2009-08-25T11:05:30.807 に答える
1

ラインをご利用の場合

TextWriter toText = new StreamWriter(toOutFile);

StreamWriter(string filePath) コンストラクターは、ファイルが存在しない場合にファイルを作成するため、次の行は必要ありません。

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

Marc の言うとおりです。他のインスタンス変数で既にファイルを開いているため、再度開くことはできません。

于 2009-08-25T11:11:24.587 に答える
0

ファイル名でライターを開くのを監視しました。私はあなたが TextWriter toText = new StreamWriter(toFile); をしたと思った。

于 2009-08-25T11:22:58.853 に答える