DataGridView のテキスト ファイルへの書き込みで IOException が発生する C#
-
19-09-2019 - |
質問
みんなおはよう、
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 の間に競合があることを示唆しています。
誰かこれについて解明してもらえませんか?よろしく
解決
二度開いていることになります。全てを失う 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")
?
他のヒント
ラインをご利用の場合
TextWriter toText = new StreamWriter(toOutFile);
ファイルが存在しない場合は StreamWriter(string filePath) コンストラクターによって作成されるため、次の行は必要ありません。
FileStream toFile = new FileStream(toOutFile, FileMode.Create);
そして、Marc は正しいです。他のインスタンス変数でファイルを既に開いているので、再度開くことはできません。
ファイル名を使用してライターを開くことを確認しました。私はあなたがそう思った テキストライター toText = new StreamWriter(toFile);
所属していません StackOverflow