处理OnFileActivated()中的文件

时间:2016-03-01 22:36:00

标签: c# windows-phone-8.1

我在处理OnFileActivated()中传递给我的应用程序的文件时遇到问题。首先,我已在我的应用程序的Package.appminifest中注册了特定的文件扩展名,因此在点击特定文件后,我的应用程序启动并运行OnFileActivated函数。

在我的情况下,文件是用System.IO.Compression.ZipArchive压缩的档案,但我认为这不是重要的。我的功能开始如下:

    protected override async void OnFileActivated(FileActivatedEventArgs args) {
        base.OnFileActivated(args);

        var file = args.Files[0];
        using (var archive = ZipFile.OpenRead(file.Path)) {
        ...

有些人可能会在我尝试访问最后一行文件时遇到错误。我还尝试了不同的解决方案,如将文件复制到本地文件夹然后访问它,但也没有运气。

问题 有没有办法做这样的事情?或者我可能是完全错误的做法?

2 个答案:

答案 0 :(得分:1)

使用Path属性对于代理文件(例如您从Activation获得)不会有用。使用取代Stream的构造函数。

答案 1 :(得分:1)

这是正确答案:

    protected override async void OnFileActivated(FileActivatedEventArgs args) {
        base.OnFileActivated(args);

        var file = (StorageFile)args.Files[0];

        using (var archive = new ZipArchive(await file.OpenStreamForReadAsync())) {
        ...

我之前没有注意到ZipArchive有构造函数,它将stream作为参数。