2015-12-21 59 views
0

这是我下载的代码(从计算器所),一个固定的路径上查看和存储图像:如何下载并保存两次图像?

private static void DownloadRemoteImageFile(string uri, string path) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

    if ((response.StatusCode == HttpStatusCode.OK || 
     response.StatusCode == HttpStatusCode.Moved || 
     response.StatusCode == HttpStatusCode.Redirect) && 
     response.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase)) 
    { 
     using (Stream inputStream = response.GetResponseStream()) 
     using (Stream outputStream = File.OpenWrite(path)) 
     { 
      byte[] buffer = new byte[4096]; 
      int bytesRead; 
      do 
      { 
       bytesRead = inputStream.Read(buffer, 0, buffer.Length); 
       outputStream.Write(buffer, 0, bytesRead); 
      } while (bytesRead != 0); 
     } 
    } 
} 

现在,让我们说,我倒是创建两个pathpath + "\duplicates\";图像:什么最好的办法呢?

回想起不同路径的功能(所以我需要下载两次)或者我可以使用多个outputStream

+0

您可以简单地使用多个outputStreams – Jaco

+1

您的目标是双倍下载数据作为对数据的双重检查,或者您是否愿意只下载一次然后在本地复制它? – adv12

回答

3

你的循环后,只需复制文件是这样的:

if (File.Exists(path)) 
    File.Copy(path, duplicatePath); 
5

System.Io.File.Copy(路径,duplicatePath)

2

你可以简单地使用多个outputStreams这样的:

using (Stream inputStream = response.GetResponseStream()) 
using (Stream outputStream = File.OpenWrite(path)) 
using (Stream outputStream2 = File.OpenWrite(duplicatePath)) 
{ 
    byte[] buffer = new byte[4096]; 
    int bytesRead; 
    do 
    { 
     bytesRead = inputStream.Read(buffer, 0, buffer.Length); 
     outputStream.Write(buffer, 0, bytesRead); 
     outputStream2.Write(buffer, 0, bytesRead); 
    } while (bytesRead != 0); 
}