6

我正在使用 Visual Studio 2012、c#、silverlight、windows phone 8 应用程序。

我们从 web 服务中获取数据,通过 web 服务,我们得到一张 base64 字符串的图片。

我将它转换为字节数组,现在我想将它保存在 windows phone 的存储中,使用内存流?我不知道这是否是正确的方法。我不想将它保存到独立存储,只是本地文件夹,因为我想在有人点击链接后显示图片。

这就是我到目前为止所拥有的。

 byte[] ImageArray;
 var image = Attachmentlist.Attachment.ToString();
 imagename = Attachmentlist.FileName.ToString();
 ImageArray = Convert.FromBase64String(image.ToString());

 StorageFolder myfolder = Windows.Storage.ApplicationData.Current.LocalFolder;
 await myfolder.CreateFileAsync(imagename.ToString());
 StorageFile myfile = await myfolder.GetFileAsync(imagename.ToString());


 MemoryStream ms = new MemoryStream();

那么在我初始化内存流之后,如何获取字节数组并将其写入存储文件,然后再次检索它?

4

2 回答 2

14

要将文件写入光盘,请尝试以下代码:

StorageFile sampleFile = await myfolder.CreateFileAsync(imagename.ToString(), 
   CreateCollisionOption.ReplaceExisting);
await FileIO.WriteBytesAsync(sampleFile, ImageArray);

内存流创建写入内存的流,因此不适用于此问题。

于 2013-06-03T07:18:56.823 回答
6
        StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile imageFile = await folder.CreateFileAsync("Sample.png", CreationCollisionOption.ReplaceExisting);

        using (IRandomAccessStream fileStream = await imageFile.OpenAsync(FileAccessMode.ReadWrite))
        {
            using (IOutputStream outputStream = fileStream.GetOutputStreamAt(0))
            {
                using (DataWriter dataWriter = new DataWriter(outputStream))
                {
                    dataWriter.WriteBytes(imageBuffer);
                    await dataWriter.StoreAsync();
                    dataWriter.DetachStream();

                }
                //await outputStream.FlushAsync();
            }
            //await fileStream.FlushAsync();
        }
于 2014-03-13T11:41:27.690 回答