通过这门课,我今天试图进行比较:
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是相同的,所以应该休息一下; 但是这样做是错误的。
答案 0 :(得分:0)
当您将文件复制到&#34; C:\ Users \ satelliteImages \ SatImage000863.gif&#34;时,您显然已将其保存而不是复制。即使将其保存为.jpg文件,也可能与原始文件不同。使用system.io.file.copy(或move)复制原始文件,以便与下载的下一个文件进行比较,而不是进行图像保存。