有关System.IO.StreamWriter的问题
本文关键字:问题 StreamWriter IO System 有关 | 更新日期: 2023-09-27 17:55:21
我毫不怀疑这个问题具有非常基本的性质,但对我来说这很难......我想使用保存文件对话框选择一个文件名/路径。喜欢这个:
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
// Get file name.
string name = saveFileDialog1.FileName;
来源: http://www.dotnetperls.com/savefiledialog
然后我想用上面的路径声明 StreamWriter(假设这是这样工作的)
System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog1_FileOk.FileName);
这必须在saveFileDialog1_FileOk函数中完成。然后我想从另一个函数/事件处理程序写入该文件(SerialPort 已收到数据)。并且文件名应该能够在运行时更改为新文件,以便来自事件处理程序的数据将写入另一个文件。
但是从另一个功能我无法访问流编写器,我不知道如何更改文件。
我还想知道如何在运行时使文件中的数据可访问。在我的第一次测试中,当我调用时,它总是写入文件
file.Close()
乙然后我无法再次打开它。
如果有人能建议我走的路,那将是一个很大的帮助......
如果我
正确理解了你的问题;你选择的方法似乎违反了单一责任的原则,除了给你带来所有这些问题。
也许你应该考虑做的是创建一个类来管理流的静态实例,并从打开的对话框和串行端口事件中使用它让我们调用流管理类 StreamManager。它将具有与以下代码类似的实现
public class StreamManager
{
private static StreamWriter file = null;
public void NewFile(string filePath)
{
this.close();
file = new StreamWriter(filePath);
}
public void WriteToFile(string yourData)
{
file.Write(yourData);
}
public void close()
{
if (file != null /* and if not already been closed*/)
{
file.Flush();
file.Close();
}
}
}
现在,您可以从打开new StreamManager().NewFile(fileName)
对话框调用并从串行端口new StreamManager ().WriteToFile(…)
。
请注意,我没有测试上述代码,仅作为指南提供。您应该为所有方法添加更多状态/错误管理
干杯