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)
这是下载文件的正确方法吗?查看下载并在网格中显示的文件的代码是什么?
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)