1 out of 2 rated this helpful - Rate this topic

FileSystemInfo.Attributes Property

Updated: May 2010

Gets or sets the attributes for the current file or directory.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
public FileAttributes Attributes { get; set; }

Property Value

Type: System.IO.FileAttributes
FileAttributes of the current FileSystemInfo.
Exception Condition
FileNotFoundException

The specified file does not exist.

DirectoryNotFoundException

The specified path is invalid; for example, it is on an unmapped drive.

SecurityException

The caller does not have the required permission.

ArgumentException

The caller attempts to set an invalid file attribute.

IOException

Refresh cannot initialize the data.

The value of the Attributes property is pre-cached if the current instance of the FileSystemInfo object was returned from any of the following DirectoryInfo methods:

To get the latest value, call the Refresh method.

The value of this property is a combination of the archive, compressed, directory, hidden, offline, read-only, system, and temporary file attribute flags.

The following example demonstrates the Attributes property. This code example is part of a larger example provided for the FileSystemInfo class.


static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
{
    //  Assume that this entry is a file.
    string entryType = "File";

    // Determine if entry is really a directory
    if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
  • FileIOPermission  

    for writing files and directories. Associated enumeration: FileIOPermissionAccess.Write Security action: Demand

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Date

History

Reason

May 2010

Updated remarks.

Information enhancement.

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Useful undocumented value for Attributes can help speed up your code

You can avoid a call to File.Exists() or FileInfo.Exists() if you are also making use of the Attributes value: Check for FileInfo.Attributes == -1 as a simple existence check.

Example from a piece of code where I needed to know if a path was a file, directory, or nonexistent, after using this technique to improve performance:

var fi = new FileInfo(path);
FileAttributes attributes = fi.Attributes;  // This forces a refresh from the filesystem.
if ((int)attributes != -1)
{
    if ((attributes & FileAttributes.Directory) != FileAttributes.Directory)
    {
        // It's a file that exists
    }
    else
    {
        // It's a directory that exists
    }
}
else
{
    // Doesn't exist

Example shown gives false positive on missing directly or file path
$0The example shown above resolves to true even if the path does not exist.$0 $0staticvoid DisplayFileSystemInfoAttributes(FileSystemInfo fsi) { // Assume that this entry is a file.string entryType = "File"; // Determine if entry is really a directoryif ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory ) { entryType = "Directory"; } // Show this entry's type, name, and creation date. Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime); }$0 $0$0 $0This will exclude paths that do not exist:$0 $0if ((fi.Attributes > 0) && (fi.Attributes & FileAttributes.Directory) == FileAttributes.Directory) { }$0