如何在Windows Phone 7中以编程方式检索下载的文件?

Shr*_*hri 4 c# webclient download windows-phone-7

我正在线下载一个epub文件.为此我首先创建了一个目录Directory.CreateDirectory,然后使用以下代码下载该文件.

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

这是下载文件的正确方法吗?查看下载并在网格中显示的文件的代码是什么?

Den*_*sky 8

1)您不应该Directory.CreateDirectory在Windows Phone上使用.相反,由于您在隔离存储上运行,因此您需要使用:

var file = IsolatedStorageFile.GetUserStoreForApplication();
file.CreateDirectory("myDirectory");
Run Code Online (Sandbox Code Playgroud)

2)下载文件可以通过WebClient以这种方式完成:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下直接创建目录是可选的.如果需要将文件保存在嵌套文件夹结构中,则还可以将文件路径设置为/Folder/NewFolder/file.epub.

3)要枚举隔离存储中的文件,您可以使用:

var file = IsolatedStorageFile.GetUserStoreForApplication();
file.GetFileNames();
Run Code Online (Sandbox Code Playgroud)

如果文件位于IsoStore的根目录中,那就是这样.如果它们位于目录中,则必须设置搜索模式并将其传递给GetFileNames- 包括文件夹名称和文件类型.对于每个文件,您都可以使用此模式:

DIRECTORY_NAME\*.*
Run Code Online (Sandbox Code Playgroud)