簡體   English   中英

關於System.IO.StreamWriter的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM