2011-08-02 46 views
4

我正在線上下載epub文件。爲此,我首先使用Directory.CreateDirectory創建了一個目錄,然後使用以下代碼下載該文件。如何在Windows Phone 7中以編程方式檢索下載的文件?

WebClient webClient = new WebClient(); 
webClient.DownloadStringAsync(new Uri(downloadedURL), directoryName); 
webClient.DownloadProgressChanged += 
        new DownloadProgressChangedEventHandler(ProgressChanged); 
webClient.DownloadStringCompleted += 
        new DownloadStringCompletedEventHandler(Completed); 

這是下載文件的正確方法嗎?什麼是代碼來查看下載的文件並將其顯示在網格中?

+0

要下載的文件類型是什麼? – Waleed

+0

這是.epub文件。 – Shri

回答

8

1)您不應該在Windows Phone上使用Directory.CreateDirectory。相反,因爲你是在獨立存儲操作,你需要使用:

var file = IsolatedStorageFile.GetUserStoreForApplication(); 
file.CreateDirectory("myDirectory"); 

2)下載文件可以通過Web客戶端來完成這樣:

WebClient client = new WebClient(); 
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); 
client.OpenReadAsync(new Uri("your_URL")); 


void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
    var file = IsolatedStorageFile.GetUserStoreForApplication(); 

    using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("file.epub", System.IO.FileMode.Create, file)) 
    { 
     byte[] buffer = new byte[1024]; 
     while (e.Result.Read(buffer, 0, buffer.Length) > 0) 
     { 
      stream.Write(buffer, 0, buffer.Length); 
     } 
    } 
} 

直接在這種情況下創建一個目錄是可選。如果您需要將文件保存在嵌套的文件夾結構中,則可以將文件路徑設置爲/Folder/NewFolder/file.epub

3)要在獨立存儲枚舉文件,你可以使用:

var file = IsolatedStorageFile.GetUserStoreForApplication(); 
file.GetFileNames(); 

那如果文件位於IsoStore的根源。如果這些位於目錄中,則必須設置搜索模式並將其傳遞到GetFileNames - 包括文件夾名稱和文件類型。對於每個單個文件,可以使用以下模式:

DIRECTORY_NAME\*.* 
+0

謝謝,它幫助我獲得輸出。 – Shri

1

沒有檔案。 DownloadStringCompleted事件參數包含一個Result成員,其中包含一個字符串,該字符串是HTTP請求的結果。在事件處理程序中,您可以參考e.Result

我不熟悉epub文件的格式,但除非它們是嚴格的文本文件,否則您的代碼無法正常工作。

您應改爲使用webclient.OpenReadAsync和相應的事件,它與方法中的DownloadStringAsync類似,但e.Result是可用於讀取二進制數據的流。

+0

謝謝,您的回覆。我將嘗試使用webclient.openreadasync進行下載。但是,我的問題是如何檢索下載後保存文件的路徑。這樣可以檢查下載的文件 – Shri

+0

在您自己保存之前,沒有文件。一個返回一個字符串,另一個像Peter Wone所建議的那樣,返回一個Stream。 –

相關問題