using System; using System.Linq; using System.Net.Http; using System.IO; using System.Threading.Tasks; namespace PixivDL { public class Program { public static void Main(string[] args) { //C:\Users\dsg\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup //string startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup); //Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)); //C:\Users\dsg\AppData\Roaming Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); var ain = Task.Run<int>(DLPic); Console.WriteLine("await!!"); ain.Wait(); Console.WriteLine(ain.Result); Console.WriteLine(); } private async static Task<int> DLPic() { byte[] temp; HttpClient hc = new HttpClient() { Timeout = TimeSpan.FromSeconds(20) }; string picdl = "http://hnd-jp-ping.vultr.com/vultr.com.100MB.bin"; //hc.DefaultRequestHeaders.Referrer = new Uri("https://www.pixiv.net"); //string picdl = "https://i.pximg.net/img-original/img/2017/06/21/00/00/01/63485483_p0.jpg"; var resop =await hc.GetAsync(picdl); //var resop = hc.SendAsync(new HttpRequestMessage(HttpMethod.Head,picdl)).Result; long? maxlen = resop.Content.Headers.ContentLength; string filename = picdl.Split('/').Last(); Stream task1 =await resop.Content.ReadAsStreamAsync(); if (File.Exists(filename)) { File.Delete(filename); } FileStream fs = new FileStream(filename, FileMode.CreateNew); BinaryReader br = new BinaryReader(task1); while (true) { //一开始 byte[] temp; temp = br.ReadBytes(2048); fs.Write(temp, 0, temp.Length); fs.Flush(); Console.WriteLine(fs.Length); if (maxlen == fs.Length) { // 可以刷新 进度条UI break; } } Console.WriteLine("Successful1"); br.Dispose(); fs.Dispose(); return 0; } /* * using System.Linq; * using System.Net.Http; * using System.IO; * using System.Threading.Tasks; */ private static int DLPic2() { HttpClient hc = new HttpClient() { Timeout = TimeSpan.FromSeconds(5) }; hc.DefaultRequestHeaders.Referrer = new Uri("https://www.pixiv.net"); string picdl = "https://i.pximg.net/img-original/img/2017/06/21/00/00/01/63485483_p0.jpg"; Task<byte[]> task1 = hc.GetByteArrayAsync(picdl); string filename = picdl.Split('/').Last(); task1.Wait(); File.WriteAllBytesAsync(filename, task1.Result); Console.WriteLine("Successful2"); return 0; } } }