1

我无法使用 DownloadDataAsync 方法。目前唯一的选择是 DownloadStringAsync 方法。如何使用此方法下载 zip 文件。(我是 windows phone 8 应用程序开发的新手)

4

3 回答 3

0

我只是想分享对我有用的解决方案。我向给定的 url 创建了一个 Web 请求,并将 gzip 文件下载到隔离的存储文件中。现在下载后我创建了一个目标文件流,并使用 GZipStream 的 WriteByte 方法将压缩的 gzip 流文件从源文件存储到目标文件。现在我们得到未压缩的文件。

注意:-GZipStream 可以从 NuGet 管理器添加到 Visual Studio。

这是我用来下载和提取 GZip 文件的代码片段。

公共异步任务 DownloadZipFile(Uri fileAdress, string fileName) { try {

            WebRequest request = WebRequest.Create(fileAdress);
            if (request != null)
            {
                WebResponse webResponse = await request.GetResponseAsync();
                if (webResponse.ContentLength != 0)
                {
                    using (Stream response = webResponse.GetResponseStream())
                    {
                        if (response.Length != 0)
                        {
                            using (IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                            {
                                if (isolatedStorage.FileExists(fileName))
                                    isolatedStorage.DeleteFile(fileName);
                                using (IsolatedStorageFileStream file = isolatedStorage.CreateFile(fileName))
                                {
                                    const int BUFFER_SIZE = 100 * 1024;
                                    byte[] buf = new byte[BUFFER_SIZE];
                                    int bytesread;
                                    while ((bytesread = await response.ReadAsync(buf, 0, BUFFER_SIZE)) > 0)
                                    {
                                        file.Write(buf, 0, bytesread);
                                    }
                                    file.Close();

                                    FileStream sourceFileStream = File.OpenRead(file.Name);
                                    FileStream destFileStream = File.Create(AppResources.OpenZipFileName);

                                    GZipStream decompressingStream = new GZipStream(sourceFileStream, CompressionMode.Decompress);
                                    int byteRead;
                                    while ((byteRead = decompressingStream.ReadByte()) != -1)
                                    {
                                        destFileStream.WriteByte((byte)byteRead);
                                    }
                                    decompressingStream.Close();
                                    sourceFileStream.Close();
                                    destFileStream.Close();
                                    PhoneApplicationService.Current.State["DestinationFilePath"] = destFileStream.Name;
                                }
                            }
                            FileDownload = true;
                        }
                    }
                }
            }

            if (FileDownload == true)
            {
                return DownloadStatus.Ok;
            }
            else
            {
                return DownloadStatus.Other;
            }
        }

        catch (Exception exc)
        {
            return DownloadStatus.Other;
        }

    }
于 2014-04-21T05:11:30.920 回答
-1

要首先从 url 下载 zip 文件,需要将 zip 文件存储到独立的存储中,然后根据需要将其解压缩并读取文件。

http://axilis.hr/uznip-archives-windows-phone

于 2013-05-20T10:03:39.813 回答