簡體   English   中英

將字符串轉換為System.IO.Stream

[英]Converting string to System.IO.Stream

我創建了一個可序列化的類並添加了一些對象。 現在,我想在單擊按鈕時創建一個基於該類的xml文件,所以我這樣做了:

private void Button1_Clicked(object sender, EventArgs e)
        {
            string fileName = "Data.xml";
            MySerializableClass msc = new MySerializableClass();
            XmlSerializer serializer = new XmlSerializer(typeof(MySerializableClass));
            StreamWriter sw = new StreamWriter(fileName, Encoding.UTF8); //'filename' is underlined
            serializer.Serialize(sw, msc);
            sw.Close(); //'Close' is underlined
            //'StreamWriter' does not contain a definition for 'Close' [...]
        }

不幸的是,我收到以下錯誤: 無法 'String' 轉換 'System.IO.Stream' 這是什么意思? 我不明白為什么無法對UTF8進行編碼。 不使用編碼會給我同樣的錯誤。

streamwriter構造函數參數錯誤..

        string fileName = "your file path";
        using(FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate))
        {
            using (StreamWriter sw = new StreamWriter(fileStream, Encoding.UTF8))
            {
                MySerializableClass msc = new MySerializableClass();
                XmlSerializer serializer = new XmlSerializer(typeof(MySerializableClass));
                serializer.Serialize(sw, msc);
            }
        }

如果要不使用FileStream,請使用此構造函數。StreamWriter(字符串路徑,布爾附加,編碼編碼)

        string fileName = "your file path";
        using (StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8))
        {
            MySerializableClass msc = new MySerializableClass();
            XmlSerializer serializer = new XmlSerializer(typeof(MySerializableClass));
            serializer.Serialize(sw, msc);
        }

請參閱StreamWriter的文檔。 https://msdn.microsoft.com/zh-CN/library/system.io.streamwriter(v=vs.110).aspx

試試這個重載StreamWriter sw = new StreamWriter(fileName, false, Encoding.UTF8);

或者,您將需要從“ data.xml”文件創建一個Stream,而不僅僅是傳遞文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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