DataGridView 写入文本文件 C# 时发生 IOException
-
19-09-2019 - |
题
大家早上好,
我的 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 之间存在冲突。
有人能解释一下吗?问候
解决方案
您打开它两次;失去所有 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(字符串文件路径)构造将创建一个文件。
FileStream toFile = new FileStream(toOutFile, FileMode.Create);
和马克是正确的,你已经有文件在其他实例变量开放一次,你不能再次打开。
我监督你打开一个文件名的作家。 我以为你 的TextWriter toText =新的StreamWriter(TOFILE);
不隶属于 StackOverflow