早上好,
我的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之间存在冲突。
有人可以对此有所了解吗? 此致
答案 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);