public FileInfo(string path) { FullName = path; Name = Path.GetFileName(path); if (unix.IsUnix) { System.IO.FileInfo fi = new System.IO.FileInfo(path); if (!fi.Exists) { return; } Length = fi.Length; LastWriteTime = fi.LastWriteTimeUtc.Ticks; return; } string fileName = NameFix.AddLongPathPrefix(path); Win32Native.WIN32_FILE_ATTRIBUTE_DATA wIn32FileAttributeData = new Win32Native.WIN32_FILE_ATTRIBUTE_DATA(); bool b = Win32Native.GetFileAttributesEx(fileName, 0, ref wIn32FileAttributeData); if (!b || (wIn32FileAttributeData.fileAttributes & Win32Native.FILE_ATTRIBUTE_DIRECTORY) != 0) { return; } Length = Convert.Length(wIn32FileAttributeData.fileSizeHigh, wIn32FileAttributeData.fileSizeLow); LastWriteTime = Convert.Time(wIn32FileAttributeData.ftLastWriteTimeHigh, wIn32FileAttributeData.ftLastWriteTimeLow); }
public static bool Exists(string path) { if (unix.IsUnix) { return(System.IO.File.Exists(path)); } string fixPath = NameFix.AddLongPathPrefix(path); Win32Native.WIN32_FILE_ATTRIBUTE_DATA wIn32FileAttributeData = new Win32Native.WIN32_FILE_ATTRIBUTE_DATA(); bool b = Win32Native.GetFileAttributesEx(fixPath, 0, ref wIn32FileAttributeData); return(b && (wIn32FileAttributeData.fileAttributes & Win32Native.FILE_ATTRIBUTE_DIRECTORY) == 0); }