我有一个.NET代码处理我需要移植到WinRT的自定义Stream
。其动机是,应用程序读取加密的文件(自定义Stream
)。在完整的.NET中我使用
var readFileStream = File.OpenRead(bookPath);
var readDecryptedStream = new MyStream(password, readFileStream);
//it is a zip file
var readZipFile = new ZipFile(readDecryptedStream);
//extract files from the zip file
MyStream
继承自Stream
并在读/写方法中进行一些编码和解码,完整代码在http://dl.dropbox.com/u/73642/mystream.cs。这段代码在.NET中运行良好。
我的WinRT实现是
var file =await ApplicationData.Current.LocalFolder.GetFileAsync(bookPath); //I copied the same file to Local folder
var filestream = await file.OpenStreamForReadAsync();
var readDecryptedStream = new MyStream(password, readFileStream);
ZipArchive z = new ZipArchive(readDecryptedStream , ZipArchiveMode.Read);
此代码的问题是new ZipArchive(readDecryptedStream , ZipArchiveMode.Read);
永远不会读完流。当我在MyStream
读取方法中设置断点时,它始终以offset = 0调用(因此它永远不会完成)。
当我使用new ZipArchive(filestream , ZipArchiveMode.Read);
的未加密文件时,一切正常,所以问题必须是MyStream
实现。
知道问题是什么?自定义Stream
在WinRT上是否需要与完整.NET中不同的实现?
答案 0 :(得分:0)
我通过重新启动计算机解决了这个问题。这很奇怪,但有时所有的流,包括从ApplicatonData读取文件只是停止工作,我必须重新启动计算机。这是一个真正的痛苦。