【问题标题】:Read / Write Memorystream in LocalFolder在 LocalFolder 中读/写内存流
【发布时间】:2014-04-25 14:24:38
【问题描述】:

我需要读写一个 MemoryStream 我编写了这个方法,但我在加载方法上有一个错误:

    public async void SaveToStorage(MemoryStream stream, String filename)
    {
        var localFolder = ApplicationData.Current.LocalFolder;
        var storageFile = await localFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);

        using (Stream x = await storageFile.OpenStreamForWriteAsync())
        {
            x.Seek(0, SeekOrigin.Begin);
            stream.WriteTo(x);
        }
    }

以及有问题的方法(我认为):

public async Task<MemoryStream> LoadToStorage(string filename)
{
    var localFolder = ApplicationData.Current.LocalFolder;
    var storageFile = await localFolder.GetFileAsync(filename);

    using (var fileStream = await storageFile.OpenStreamForReadAsync())
    {
        using (var memoryStream = new MemoryStream())
        {
            await fileStream.CopyToAsync(memoryStream);

            memoryStream.Seek(0, SeekOrigin.Begin);
            return memoryStream;
        }
    }
}

感谢您的帮助

【问题讨论】:

  • 问题的真正本质是什么?您已经告诉我们您认为问题可能出在哪里,但没有告诉我们它是什么
  • 当我像这样读取文件时:“var myMyMemoryStream = await mp.LoadFromStorage(myFile); if (_dataContext.ImageNewStream.Length == 0) ...”我有一个例外:'myMyMemoryStream .Length' a levé une exception de type 'System.ObjectDisposedException'
  • 好的,所以问题只是我在回答中猜到的问题。

标签: c# windows-phone-8.1 storagefile


【解决方案1】:

您不想在 LoadToStorage 语句中的 LoadToStorage 方法中创建 MemoryStream 语句,因为大概调用者不希望您交回一个已被 Disposed 的对象:

public async Task<MemoryStream> LoadToStorage(string filename)
{
    var localFolder = ApplicationData.Current.LocalFolder;
    var storageFile = await localFolder.GetFileAsync(filename);

    using (var fileStream = await storageFile.OpenStreamForReadAsync())
    {
        var memoryStream = new MemoryStream();
        await fileStream.CopyToAsync(memoryStream);

        memoryStream.Seek(0, SeekOrigin.Begin);
        return memoryStream;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多