温馨提示:代码在线浏览功能只能做为源码浏览参考,不能展示项目的全部,如果想更进一步了解该代码请下载:NETCMSv1.5(Build0509)完整源码版
当前文件路径:NetCMSv15/NetCMS.Content/Common/FileCompare.cs

1//====================================================== 2
//== (c)2008 aspxcms inc by NeTCMS v1.0 == 3
//== Forum:bbs.aspxcms.com == 4
//== Website:www.aspxcms.com == 5
//====================================================== 6
using System; 7
using System.Collections.Generic; 8
using System.Text; 9
using System.Text.RegularExpressions; 10
using System.IO; 11
using NetCMS.Model; 12
13
namespace NetCMS.Content.Common 14
{ 15
public class FileCompare 16
{ 17
private string FileType = @".gif|.jpg|.swf|"; 18
private List<FileComprInfo> fllist; 19
private string RootDir; 20
private int dirlen; 21
private string Contrast = string.Empty; 22
public FileCompare(string root, string contrast) 23
{ 24
RootDir = root; 25
if (!Directory.Exists(RootDir)) 26
throw new Exception("文件目录不存在!"); 27
fllist = new List<FileComprInfo>(); 28
dirlen = root.Length; 29
Contrast = contrast; 30
GetStList(); 31
} 32
public void GetFileList() 33
{ 34
GetDirInfo(RootDir); 35
} 36
private void GetDirInfo(string ParentDir) 37
{ 38
DirectoryInfo[] ChildDirectory; //子目录集 39
FileInfo[] NewFileInfo; //当前所有文件 40
DirectoryInfo FatherDirectory = new DirectoryInfo(ParentDir); //当前目录 41
string dname = FatherDirectory.Name.ToLower(); 42
if (dname == "bin" || dname == Config.UIConfig.dirHtml.ToLower() || dname == Config.UIConfig.dirSite.ToLower()) 43
return; 44
NewFileInfo = FatherDirectory.GetFiles(); 45
foreach (FileInfo DirFile in NewFileInfo) //获取此级目录下的所有文件 46
{ 47
string exname = DirFile.Extension.ToLower() + "|"; 48
if (FileType.IndexOf(exname) >= 0) 49
continue; 50
string filenm = DirFile.FullName.Substring(dirlen); 51
long filesz = DirFile.Length; 52
DateTime filetm = DirFile.LastWriteTime; 53
bool flag = false; 54
foreach (FileComprInfo f in fllist) 55
{ 56
if (f.FileName.ToLower() == filenm.ToLower()) 57
{ 58
f.FaFileSize = filesz; 59
f.FaModifyTime = filetm; 60
flag = true; 61
break; 62
} 63
} 64
if (!flag) 65
{ 66
FileComprInfo fl = new FileComprInfo(filenm); 67
fl.FaFileSize = filesz; 68
fl.FaModifyTime = filetm; 69
fllist.Add(fl); 70
} 71
} 72
ChildDirectory = FatherDirectory.GetDirectories("*.*"); //得到子目录集 73
foreach (DirectoryInfo dirInfo in ChildDirectory) //获取此级目录下的一级目录 74
{ 75
GetDirInfo(dirInfo.FullName); 76
} 77
} 78
public List<FileComprInfo> FileList 79
{ 80
get { return fllist; } 81
} 82
private void GetStList() 83
{ 84
if (Contrast == null || Contrast == string.Empty) 85
return; 86
string pattern = "\\<file\\ name=\"(?<f>[^\"]+)\"\\ size=\"(?<s>\\d+)\"\\ modifytime=\"(?<t>[^\"]+)\"\\ */\\>(\r\n)*"; 87
Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase); 88
Match m = reg.Match(Contrast); 89
while (m.Success) 90
{ 91
try 92
{ 93
string filename = m.Groups["f"].Value.Trim(); 94
long l = long.Parse(m.Groups["s"].Value); 95
DateTime t = DateTime.Parse(m.Groups["t"].Value); 96
FileComprInfo fl = new FileComprInfo(filename); 97
fl.StFileSize = l; 98
fl.StModifyTime = t; 99
fllist.Add(fl); 100
} 101
catch 102
{ } 103
m = m.NextMatch(); 104
} 105
} 106
107
} 108
} 109





}
}