2014-11-27 5 views
4

Есть ли способ загрузить и разархивировать файл с удаленного сервера с использованием кросс-платформенного приложения Xamarin. Я использую PC: librray Storage взаимодействовать с файлами и папкамиЗагрузите zip-файл и распакуйте его на внутреннюю память Android Xamarin cross platform app

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"); 

Это путь я создал F1 папку внутри приложения корневой папки и создает файлы firstfile.txt и писать некоторые comtent к нему. Но как я могу сделать то же самое с zip-файлом? Загрузите zip-файл, распакуйте содержимое в папку.

Также как я могу видеть папки/файлы, созданные во время запуска приложения? Являются ли какие-либо инструменты IsoStoreSpy доступными для эмулятора Xamarin android?

+0

Вы поняли это? – emseetea

+1

У меня есть один ответ на ваш вопрос. Если вы хотите увидеть данные эмулятора, вы можете увидеть, используя Android Device Monitor (DDMS), вы найдете его в крайнем левом углу значка Android Device Logging в visual studio 2015, имейте в виду он будет работать только при запуске приложения. –

ответ

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; 
} 

вы хотите написать, что Thats данные будучи загруженными, поэтому добавьте к их методу обработчик файла и сделайте что-то вроде

await zipFile.WriteAsync(buffer, 0, bytesRead); 

, тогда есть распаковка, я знаю, что я загрузил Microsofts Compression NuGet, прежде чем ... взглянув на некоторый код, который я использовал DeflateStream в пространстве имен System.IO.Compression для декомпрессии.

и поскольку у вас уже есть что-то для обработки локального файла, я ничего не буду упоминать для этого.

Смежные вопросы