【问题标题】:How to use System.IO Serializers in UWP with Windows.Storage如何在带有 Windows.Storage 的 UWP 中使用 System.IO 序列化程序
【发布时间】:2020-04-23 04:30:53
【问题描述】:

我希望能够拥有一个类对象列表 (List<Class>) 并能够轻松地写入和读取文本文件。

在我以前使用的旧 控制台应用程序Windows 窗体应用程序中:

List<Class> _myList = ... 
WriteToFile<List<Class>>("C:\\...\\Test.txt", Class _myList)

public static void WriteToFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
        {
            TextWriter writer = null;
            try
            {
                var serializer = new XmlSerializer(typeof(T));
                writer = new StreamWriter(filePath, append);
                serializer.Serialize(writer, objectToWrite);
            }
            finally
            {
                if (writer != null)
                    writer.Close();
            }
        }

但是,这在 UWP 应用程序中不起作用,我必须使用 StorageFolderStorageFile 来将简单的文本写入这样的文件:

StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file= await storageFolder.GetFileAsync("Test.txt");
await FileIO.WriteTextAsync(sampleFile, "Example Write Text");

但我希望能够使用XmlSerializerStreamWriter 的更高级功能将类列表写入我的UWP 应用程序中的文件。

我该怎么做?

【问题讨论】:

    标签: c# uwp storage xmlserializer storagefile


    【解决方案1】:

    您可以使用基于Stream 的版本的方法,例如StreamWriter 有一个构造函数,它采用System.IO.Stream 实例。

    要从StorageFile 获取System.IO.Stream,您可以使用OpenStreamForWriteAsyncOpenStreamForReadAsync 扩展方法,它们位于UWP 上的System.IO 命名空间中:

    //add to the top of the file
    using System.IO;
    
    //in your code
    var stream = await myStorageFile.OpenStreamForWriteAsync();
    //do something, e.g.
    var streamWriter = new StreamWriter(stream);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多