如果上次下载的卫星图像和当前下载的卫星图像是否相同,我该如何比较?

时间:2015-02-15 22:51:50

标签: c# .net winforms

通过这门课,我今天试图进行比较:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using mws;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using DannyGeneral;



namespace General_utility
{


  static  class File_Utility
    {
      static  public bool File_Comparison(string Filename_1, string Filename_2)
        {
            FileInfo fi;
            int i;
           byte[] a,b;
           a=File.ReadAllBytes(Filename_1);
           b=File.ReadAllBytes(Filename_2);
           fi = new FileInfo(a.ToString());
         if (a.Length != b.Length)
         {
             return false;
         }
         else
         {
             for (i = 0; i < a.Length; i++)
             {
                 if (a[i] != b[i])
                     return false;                 
             }
         }
         return true;

        }

    }

}

然后我就这样使用它:

file_compare = File_Utility.File_Comparison(temp_sat_dir, last_file_satellite);

file_compare是一个bool temp_sat_dir是当前下载的文件:C:\ Users \ temp \ satellite.jpg

temp_sat_dir中的文件将始终使用相同的名称。

last_file_satellite是下载的最后一个文件,我将其复制到新目录:C:\ Users \ satelliteImages \ SatImage000863.gif

然后我决定是否下载我需要的下一个文件。如果第一个当前文件不相同,则继续并下载其余文件,但如果相同,请不要下载其余文件:

if (file_compare == true)
                    {
                        break;
                    }
                    else
                    {
                        try
                        {
                            client1.DownloadFile(link, filePath);
                        }
                        catch (Exception e)
                        {
                            DannyGeneral.Logger.Write(e.ToString());
                        }
                    }

file_compare第一次为false,并使用client1下载了该文件。 我的所有代码都在循环中,我没有在这里显示,但是它处于循环中并且每15分钟下载新的9个文件。

但问题是如果我再次运行程序或者如果15分钟过去就会继续下载相同的9张图像。

只有当第一个文件与最后一个文件不一样时,我才能以某种方式使其下载。

问题是file_compare现在再次出现错误。首先,它下载了9个文件,现在我再次运行程序,但它仍然是假的。我检查的图像是一样的。文件satellite.jpg和SatImage000863.gif是相同的,所以应该休息一下; 但是这样做是错误的。

1 个答案:

答案 0 :(得分:0)

当您将文件复制到&#34; C:\ Users \ satelliteImages \ SatImage000863.gif&#34;时,您显然已将其保存而不是复制。即使将其保存为.jpg文件,也可能与原始文件不同。使用system.io.file.copy(或move)复制原始文件,以便与下载的下一个文件进行比较,而不是进行图像保存。