将字节数组写入windows phone中的存储文件

时间:2013-06-03 07:05:38

标签: c# windows-phone-8

我正在使用Visual Studio 2012,c#,silverlight,windows phone 8 app。

我们从网络服务获取数据,通过网络服务,我们得到的图片是base64字符串。

我将它转换为字节数组,现在我想保存它以便使用内存流来存储Windows手机?我不知道这是不是正确的做法。我不想将它保存到独立的存储空间,只是保存在本地文件夹中,因为我想在用户点击链接后显示图片。

这是我到目前为止所做的。

 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();

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

2 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分: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();
        }