[英]Questions about System.IO.StreamWriter
我毫不懷疑這個問題是非常基本的問題,但是對我來說卻很難...我想用saveFileDialog選擇一個文件名/路徑。 像這樣:
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
// Get file name.
string name = saveFileDialog1.FileName;
資料來源: http : //www.dotnetperls.com/savefiledialog
然后我想從上面聲明PathWriter(假設它像這樣工作)
System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog1_FileOk.FileName);
這必須在saveFileDialog1_FileOk函數中完成。 然后,我想從另一個函數/事件處理程序(SerialPort已接收到數據)寫入該文件。 並且文件名應該能夠在運行時更改為新文件,以便將事件處理程序中的數據寫入另一個文件。
但是,從該其他功能,我無法訪問StreamWriter,而且我不知道如何更改文件。
我也想知道如何在運行時訪問文件中的數據。 在我的第一個測試中,它總是在我調用時寫入文件中
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().NewFile(fileName)
new StreamManager ().WriteToFile(…)
。
請注意,我尚未測試以上代碼,僅供參考。 您應該向所有方法添加更多狀態/錯誤管理
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.