需求:在文本框输入URL,将URL资源下载到本地
主要使用类:
WebRequest:向对应URL获取一个数据拉取请求
WebClient:
DownloadFile()方法:加载URL数据到指定文件;
OpenRead()方法:为对应URL资源打开一个可读流;
FileStream:以文件流的方式打开一个文件,并操作文件;
示例代码:
public void StartDown()
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.InitialDirectory = Path.Combine(Directory.GetCurrentDirectory() + "\\Downapp");
sfd.Title = "下载";
sfd.Filter = "Application(*.exe)|*.exe";
sfd.FilterIndex = 0;
var ret = sfd.ShowDialog();
if (ret != null & ret.Value)
{
try
{
WebRequest webRequest = WebRequest.Create(MyUrl);
WebClient webClient = new WebClient();
webClient.DownloadFile(MyUrl, sfd.FileName);
Stream stream = webClient.OpenRead(MyUrl);
// StreamReader streamReader = new StreamReader(stream);
byte[] mydata = new byte[10000];
int len = mydata.Length;
int startpos = 0;
while (len > 0)
{
var m = stream.Read(mydata, startpos, len);
if (m == 0)
{
break;
}
startpos += m;
len -= m;
}
FileStream fileStream = new FileStream(sfd.FileName, FileMode.Open, FileAccess.Read | FileAccess.Write);
fileStream.Write(mydata, 0, startpos);
fileStream.Close();
stream.Close();
MessageBox.Show("下载完毕!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
<TextBox Height="30"
FontSize="20"
Text="{Binding MyUrl}" />
<Button Grid.Row="1"
Width="80"
Height="80"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Command="{Binding DownCommand}"
Content="Down"
FontSize="25"
FontWeight="Bold" />