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; //} }