Click to Rate and Give Feedback
TechNet
TechNet Library
Collapse All/Expand All Collapse All
.NET Framework Class Library
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)
Visual Basic
Public Property Attributes As FileAttributes
C#
public FileAttributes Attributes { get; set; }
Visual C++
public:
property FileAttributes Attributes {
    FileAttributes get ();
    void set (FileAttributes value);
}
F#
member Attributes : FileAttributes with get, set
ExceptionCondition
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.

Visual Basic
Sub DisplayFileSystemInfoAttributes(ByVal fsi As IO.FileSystemInfo)
    ' Assume that this entry is a file.
    Dim entryType As String = "File"

    ' Determine if this entry is really a directory.
    If (fsi.Attributes And FileAttributes.Directory) = FileAttributes.Directory Then
        entryType = "Directory"
    End If

    ' Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", _
        entryType, fsi.FullName, fsi.CreationTime)
End Sub
C#
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);
}
Visual C++
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

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.

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Useful undocumented value for Attributes can help speed up your code      erikmav   |   Edit   |   Show History

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
}

Tags What's this?: Add a tag
Flag as ContentBug
Example shown gives false positive on missing directly or file path      JeffB123   |   Edit   |   Show History
$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
Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker