예제 #1
0
        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);
        }
예제 #2
0
        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);
        }