2017-12-12 19 views
1

別のファイルを含むZipファイルを作成するはずのコードを自分で作成しました。このファイルはキャンバスから作成されます。しかし、作成されたzipファイルは空で何も含まれていません。例外もスローされません。どんな考えが間違っているかもしれませんか?ファイルをzipアーカイブに保存できません

var savePicker = new Windows.Storage.Pickers.FileSavePicker(); 
savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; 
savePicker.FileTypeChoices.Add("Extended sketchpad", new[] { ".exsk" }); 

Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync(); 
if (null != file) 
{ 
    try 
    { 
     using (var memoryStream = new MemoryStream()) 
     { 
      using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) 
      { 
       var giffile = archive.CreateEntry("layer.gif"); 
       using (Stream entryStream = giffile.Open()) 
       { 
        await MyInkCanvas.InkPresenter.StrokeContainer.SaveAsync(entryStream.AsOutputStream()); 
       } 
      } 

      using (Windows.Storage.Streams.IRandomAccessStream finalStream = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)) 
      { 
       finalStream.Size = 0; 

       memoryStream.Seek(0, SeekOrigin.Begin); 
       memoryStream.CopyTo(finalStream.AsStreamForWrite()); 
      } 
     } 
     //MainPage.NotifyUser("File has been saved!", NotifyType.StatusMessage); 
    } 
    catch (Exception ex) 
    { 
     //MainPage.NotifyUser(ex.Message, NotifyType.ErrorMessage); 
    } 
} 

答えて

0

なぜファイルに直接書き込まないのですか?

using (var fileStream = await file.OpenStreamForWriteAsync()) 
{ 
    using (var archive = new ZipArchive(fileStream, ZipArchiveMode.Create, true)) 
    { 
     var giffile = archive.CreateEntry("layer.gif"); 

     using (Stream entryStream = giffile.Open()) 
     { 
      await MyInkCanvas.InkPresenter.StrokeContainer.SaveAsync(entryStream.AsOutputStream()); 
     } 
    } 
} 
関連する問題