我创建了一个简单的例子,我无法在任何地方找到解决方案。我想保存UI文本框数据,并在另一个(相同的)Windows窗体文件中打开它。 这是代码示例:
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
StreamWriter write = new StreamWriter(File.Create(sfd.FileName));
write.Write(txtFirstInput.Text);
write.Write(txtSecondInput.Text);
write.Close();
write.Dispose();
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if(ofd.ShowDialog() == DialogResult.OK)
{
StreamReader read = new StreamReader(File.OpenRead(ofd.FileName));
txtFirstInput.Text = read.ReadLine();
txtSecondInput.Text = read.ReadLine();
read.Close();
read.Dispose();
}
}
我遇到的问题是所有输入数据都在第一个文本框中。怎么分开呢?什么是最简单,最有效的方法? 我应该创建并使用字节缓冲区(和HxD)来通过用户输入进行流式传输吗?
有人可以给我一些指示或示例。
感谢您的时间
答案 0 :(得分:2)
使用ReadLine读取数据,因此在将数据写入磁盘时需要使用WriteLine
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
using(StreamWriter write = new StreamWriter(File.Create(sfd.FileName)))
{
write.WriteLine(txtFirstInput.Text);
write.WriteLine(txtSecondInput.Text);
}
}
}
使用Write,数据被写入磁盘而没有行回车,所以它只在一行上。当您调用ReadLine时,将读取所有数据并将其放在第一个文本框中。
另请注意,始终建议在using语句中包含StreamWriter之类的IDisposable对象。此方法将确保您的Stream正常关闭并在出现异常时处理。 (同样应该应用于下面的StreamReader)