Beispiel #1
0
        public static bool FileExists(string filePath)
        {
            filePath = CheckAddLongPathPrefix(filePath);

            var wIn32FileAttributeData = default(PInvokeHelper.WIN32_FILE_ATTRIBUTE_DATA);

            var b = PInvokeHelper.GetFileAttributesEx(filePath, 0, ref wIn32FileAttributeData);

            return(b &&
                   wIn32FileAttributeData.dwFileAttributes != -1 &&
                   (wIn32FileAttributeData.dwFileAttributes & 16) == 0);

            // --

            //var a = PInvokeHelper.GetFileAttributes(filePath);
            //if ((a & PInvokeHelper.INVALID_FILE_ATTRIBUTES) == PInvokeHelper.INVALID_FILE_ATTRIBUTES)
            //{
            //    return false;
            //}
            //else
            //{
            //    return (a & PInvokeHelper.FILE_ATTRIBUTE_DIRECTORY) == 0;
            //}

            // --

            //filePath = CheckAddLongPathPrefix(filePath);

            //PInvokeHelper.WIN32_FIND_DATA fd;
            //var result = PInvokeHelper.FindFirstFile(filePath.TrimEnd('\\'), out fd);

            //if (result.ToInt32() == PInvokeHelper.ERROR_FILE_NOT_FOUND || result == PInvokeHelper.INVALID_HANDLE_VALUE)
            //{
            //    return false;
            //}
            //else
            //{
            //    return ((int)fd.dwFileAttributes & PInvokeHelper.FILE_ATTRIBUTE_DIRECTORY) == 0;
            //}
        }