我对WinRT开发平台有点新了,它已经让我发疯了(我是一个长期的.Net开发人员,所有那些被删除的API都很烦人) I'当压缩存在于Windows.Storage.ApplicationData.Current.TemporaryFolder中的所有文件时遇到问题。这里是我当前的代码(VB.Net,基于MSDN代码,“file”是zip文件,我将把所有的文件文件到):对文件夹中的所有文件进行压缩
Using zipMemoryStream As New MemoryStream()
Using zipArchive As New Compression.ZipArchive(zipMemoryStream, Compression.ZipArchiveMode.Create)
For Each fileToCompress As Windows.Storage.StorageFile In (Await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFilesAsync())
Dim buffer As Byte() = WindowsRuntimeBufferExtensions.ToArray(Await Windows.Storage.FileIO.ReadBufferAsync(fileToCompress))
Dim entry As ZipArchiveEntry = zipArchive.CreateEntry(fileToCompress.Name)
Using entryStream As Stream = entry.Open()
Await entryStream.WriteAsync(buffer, 0, buffer.Length)
End Using
Next
End Using
Using zipStream As Windows.Storage.Streams.IRandomAccessStream = Await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)
Using outstream As Stream = zipStream.AsStreamForWrite()
Dim buffer As Byte() = zipMemoryStream.ToArray()
outstream.Write(buffer, 0, buffer.Length)
outstream.Flush()
End Using
End Using
End Using
它建立好了,但是当我启动代码,我有例外: UnauthorizedAccessException:拒绝访问。 (例外德HRESULT:0X80070005(E_ACCESSDENIED)) 在线:?!WindowsRuntimeBufferExtensions.ToArray(blahblah ... 我不知道什么是错的任何想法
在此先感谢
非常感谢!我注意到我忘记关闭文件流,这让Windows认为它们仍然在使用。 – user1857763