You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

172 lines
4.7 KiB
C#

2 years ago
using System.Diagnostics;
namespace Estsh.Client.Common.FileManager
{
public static class FileInfoExtensions
{
public static int CompareTo(this FileInfo fileInfo, FileInfo other)
{
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(fileInfo.FullName);
FileVersionInfo fviOther = FileVersionInfo.GetVersionInfo(other.FullName);
if (null == fvi.FileVersion || null == fviOther.FileVersion)
{
return fileInfo.LastWriteTime.CompareTo(other.LastWriteTime);
}
else if (fvi.FileVersion.IndexOf('.') < 0 || fviOther.FileVersion.IndexOf('.') < 0)
{
return fileInfo.LastWriteTime.CompareTo(other.LastWriteTime);
}
else
{
//return Version.CompareTo(other.Version);
string[] vers = fvi.FileVersion.Split('.');
string[] vers_other = fviOther.FileVersion.Split('.');
int iVer = 0, iVer_other = 0;
for (int index = 0; index < vers.Length; index++)
{
iVer = Convert.ToInt32(vers[index]);
iVer_other = Convert.ToInt32(vers_other[index]);
if (iVer != iVer_other)
return iVer.CompareTo(iVer_other);
}
return iVer.CompareTo(iVer_other);
}
}
}
///// <summary>
///// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>
///// </summary>
//[Serializable]
//public class FileInfos
//{
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X
// /// </summary>
// public List<FileInfo> Infos;
// // private long _totalBytes;
// /// <summary>
// /// <20>c<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>
// /// </summary>
// public FileInfos()
// {
// Infos = new List<FileInfo>();
// }
// public long TotalBytes
// {
// get
// {
// long totals = 0;
// foreach (FileInfo fi in Infos)
// {
// totals += fi.Size;
// }
// return totals;
// }
// }
//}
///// <summary>
///// <20><><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD>
///// </summary>
//[Serializable]
//public class FileInfo : IComparable<FileInfo>
//{
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>
// /// </summary>
// private string _name;
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>p
// /// </summary>
// private long _size;
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>̦Z<CCA6>ק<EFBFBD><D7A7>ɶ<EFBFBD>
// /// </summary>
// private DateTime _lastWriteTime;
// /// <summary>
// /// <20><><EFBFBD>󪩥<EFBFBD><F3AAA9A5>]EXE, DLL <20><><EFBFBD><EFBFBD>)
// /// </summary>
// private string _version;
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57>
// /// </summary>
// public string Name
// {
// get { return _name; }
// set { _name = value; }
// }
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>p
// /// </summary>
// public long Size
// {
// get { return _size; }
// set { _size = value; }
// }
// /// <summary>
// /// <20><><EFBFBD><EFBFBD><EFBFBD>̦Z<CCA6>ק<EFBFBD><D7A7>ɶ<EFBFBD>
// /// </summary>
// public DateTime LastWriteTime
// {
// get { return _lastWriteTime; }
// set { _lastWriteTime = value; }
// }
// /// <summary>
// /// <20><><EFBFBD>󪩥<EFBFBD><F3AAA9A5>]EXE, DLL <20><><EFBFBD><EFBFBD><EFBFBD>^
// /// </summary>
// public string Version
// {
// get { return _version; }
// set { _version = value; }
// }
// #region IComparable<FileInfo> <20><><EFBFBD><EFBFBD>
// public int CompareTo(FileInfo other)
// {
// if (null == Version || null == other.Version)
// {
// return LastWriteTime.CompareTo(other.LastWriteTime);
// }
// else if (Version.IndexOf('.') < 0 || other.Version.IndexOf('.') < 0)
// {
// return LastWriteTime.CompareTo(other.LastWriteTime);
// }
// else
// {
// //return Version.CompareTo(other.Version);
// string[] vers = Version.Split('.');
// string[] vers_other = other.Version.Split('.');
// int iVer = 0, iVer_other = 0;
// for (int index=0; index < vers.Length; index++)
// {
// iVer = Convert.ToInt32(vers[index]);
// iVer_other = Convert.ToInt32(vers_other[index]);
// if (iVer != iVer_other)
// return iVer.CompareTo(iVer_other);
// }
// return iVer.CompareTo(iVer_other);
// }
// }
//#endregion
//}
}