FileUtil.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Configuration / System / Configuration / FileUtil.cs / 1305376 / FileUtil.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Configuration { 
    using System; 
    using System.IO;
    using Microsoft.Win32; 
    using System.Runtime.InteropServices;

    static internal class FileUtil {
        const int HRESULT_WIN32_FILE_NOT_FOUND = unchecked((int)0x80070002); 
        const int HRESULT_WIN32_PATH_NOT_FOUND = unchecked((int)0x80070003);
 
        // 
        // Use to avoid the perf hit of a Demand when the Demand is not necessary for security.
        // 
        // If trueOnError is set, then return true if we cannot confirm that the file does NOT exist.
        //
        internal static bool FileExists(string filename, bool trueOnError) {
            UnsafeNativeMethods.WIN32_FILE_ATTRIBUTE_DATA data; 
            bool ok = UnsafeNativeMethods.GetFileAttributesEx(filename, UnsafeNativeMethods.GetFileExInfoStandard, out data);
            if (ok) { 
                // The path exists. Return true if it is a file, false if a directory. 
                return (data.fileAttributes & (int) FileAttributes.Directory) != (int) FileAttributes.Directory;
            } 
            else {
                if (!trueOnError) {
                    return false;
                } 
                else {
                    // Return true if we cannot confirm that the file does NOT exist. 
                    int hr = Marshal.GetHRForLastWin32Error(); 
                    if (hr == HRESULT_WIN32_FILE_NOT_FOUND || hr == HRESULT_WIN32_PATH_NOT_FOUND) {
                        return false; 
                    }
                    else {
                        return true;
                    } 
                }
            } 
        } 
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Configuration { 
    using System; 
    using System.IO;
    using Microsoft.Win32; 
    using System.Runtime.InteropServices;

    static internal class FileUtil {
        const int HRESULT_WIN32_FILE_NOT_FOUND = unchecked((int)0x80070002); 
        const int HRESULT_WIN32_PATH_NOT_FOUND = unchecked((int)0x80070003);
 
        // 
        // Use to avoid the perf hit of a Demand when the Demand is not necessary for security.
        // 
        // If trueOnError is set, then return true if we cannot confirm that the file does NOT exist.
        //
        internal static bool FileExists(string filename, bool trueOnError) {
            UnsafeNativeMethods.WIN32_FILE_ATTRIBUTE_DATA data; 
            bool ok = UnsafeNativeMethods.GetFileAttributesEx(filename, UnsafeNativeMethods.GetFileExInfoStandard, out data);
            if (ok) { 
                // The path exists. Return true if it is a file, false if a directory. 
                return (data.fileAttributes & (int) FileAttributes.Directory) != (int) FileAttributes.Directory;
            } 
            else {
                if (!trueOnError) {
                    return false;
                } 
                else {
                    // Return true if we cannot confirm that the file does NOT exist. 
                    int hr = Marshal.GetHRForLastWin32Error(); 
                    if (hr == HRESULT_WIN32_FILE_NOT_FOUND || hr == HRESULT_WIN32_PATH_NOT_FOUND) {
                        return false; 
                    }
                    else {
                        return true;
                    } 
                }
            } 
        } 
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK