下载一个zip文件并解压缩到内部存储Android Xamarin跨平台应用程序

时间:2014-11-27 09:39:27

标签: xamarin xamarin.forms

有没有办法使用Xamarin跨平台应用程序从远程服务器下载和解压缩文件。 我使用PC:Storage librray与文件和文件夹进行交互

IFolder rootFolder = FileSystem.Current.LocalStorage;
        IFolder folder = await rootFolder.CreateFolderAsync("MyAppRoot\\F1",CreationCollisionOption.OpenIfExists);
        IFile file = await folder.CreateFileAsync("firstfile.txt",
            CreationCollisionOption.ReplaceExisting);
        await file.WriteAllTextAsync("my content");

这是我在app根文件夹中创建文件夹F1并创建文件firstfile.txt并为其写一些内容的方式。但是我怎么能用zip文件做同样的事情呢? 下载zip文件,将内容解压缩到文件夹。

另外,我如何才能看到运行应用程序时创建的文件夹/文件?是否有任何IsoStoreSpy工具可用于Xamarin android模拟器?

1 个答案:

答案 0 :(得分:0)

第一步,获取文件:

Xamarin帮助Downloading the file

如果链接移动/死亡,请执行下载任务:

public static async Task<int> CreateDownloadTask(string urlToDownload, IProgress<DownloadBytesProgress> progessReporter)
{
int receivedBytes = 0;
int totalBytes = 0;
WebClient client = new WebClient();

using (var stream = await client.OpenReadTaskAsync(urlToDownload))
{
    byte[] buffer = new byte[4096];
    totalBytes = Int32.Parse(client.ResponseHeaders[HttpResponseHeader.ContentLength]);

    for (;;)
    {
        int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        if (bytesRead == 0)
        {
            await Task.Yield();
            break;
        }

        receivedBytes += bytesRead;
        if (progessReporter != null)
        {
            DownloadBytesProgress args = new DownloadBytesProgress(urlToDownload, receivedBytes, totalBytes);
            progessReporter.Report(args);
        }
    }
}
return receivedBytes;
}

您想要编写正在下载的数据,因此请在文件处理程序中添加一些文件处理程序并执行类似

的操作
await zipFile.WriteAsync(buffer, 0, bytesRead);
然后解压缩,我知道我之前已经下载过Microsofts Compression NuGet了......看了一下代码我在System.IO.Compression命名空间中使用了DeflateStream来解压缩东西。

因为你已经掌握了处理本地文件的内容,所以我不会提及任何内容。