我有一个.NET代码处理我需要移植到WinRT的自定义Stream
。其动机是,该应用程序读取加密的文件(自定义Stream
)。在完整的.NET我使用Stream
在Windows应用商店应用中使用自定义流
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
继承和做一些编码和解码的读/写方法,完整的代码是在这里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上需要不同的实现方式吗?
在WinRT实现中,您使用'readFlexiStream'来构建'ZipArchive'对象。 'readFlexiStream'从哪里来?也许你应该使用'readDecryptedStream'来代替? – 2013-03-13 16:21:38
@chuex a typo,sorry – 2013-03-13 22:39:40
'offset == 0'绝对没有错。 'offset'指的是'缓冲区'而不是流。对于(int i = 0; i
2013-03-15 09:58:22