C++Language FeatureLearn C++

How To Get The Attributes Of A Given File For Windows App Development

C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications for Windows App Development, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs. There is a free C++ Builder Community Edition for students, beginners, and startups.

C++ Builder has specific Path Manipulation Routines that allows user to edit, extract, get and set drive name, directory name, file name, file extensions, .. etc and these methods are combined in Vcl.FileCtrl, System.IOUtils, System.SysUtils libraries. These path manipulation methods are easy to use and easy to get or set file path strings in that operating system. These can be used with other component properties like FileName property of OpenDialog, SaveDialog components.

Let’s see how we can use GetAttributes Method to get File Attributes from given a file or directory path String on Windows.

What does the GetAttributes method do?

The GetAttributes method (System::SysUtils::ExtractFileName) is a Path Manipulation Routine that used to obtain the attributes of a given file. The return value of GetAttributes is a set of TFileAttributes values; each value of the set represents a file attribute. To use this GetAtrributes method we need to include System.IOUtils.hpp.

Note that GetAttributes method raises an exception if the file or directory cannot be accessed or the path is invalid. If the Path parameter is a symbolic link and the FollowLink parameter is set to True, the method is performed on the target file (or directory). If the first condition is True, but the FollowLink parameter is set to False, the method will be performed on the symbolic link. If the link is broken, the method will always return False.

Syntax:

Here;
Path is the path to the file or directory for which the attributes are obtained.
FollowLink specifies whether the symbolic link is used.

Simple Example:

We can separate drives and folders in a path string with “\\” to define single \ and we can get attributes of a given file path string as below,

As you see in this example, we can easily check if the file is ReadOnly or not.

What is the TFileAttributes set?

TFileAttributes represents a set of file or directory attributes. It is a set of file or directory attributes. The TFileAttributes enumeration is used in file operation routines, which modify, read, or remove attributes from a file or directory. The following are possible values of TFileAttribute:

ValueMeaning
faReadOnlyIdentifies read-only files or directories.
faHiddenIdentifies hidden files or directories.
faSystemIdentifies system files or directories.
faDirectoryIdentifies a directory.
faArchiveIdentifies Windows archived files.
faDeviceIdentifies Windows device files.
faNormalIdentifies normal files.
faTemporaryIdentifies temporary files or directories.
faSparseFileIdentifies a sparse file. A sparse file is a large file filled mostly with zeros.
faReparsePointIdentifies a reparse point. A reparse point is a block of user-defined data linked to a real file or directory.
faCompressedIdentifies a compressed file or directory.
faOfflineIdentifies an offline file whose contents are unavailable.
faNotContentIndexedIdentifies a file that is skipped from the indexing operations.
faEncryptedIdentifies an encrypted file or directory.
faSymLinkIdentifies a symbolic link.

Note that there are TFileAttributes enumeration and TFileAttribute without plural s. One defines all atributes other defines defined attribute (i.e. TFileAttribute::ReadOnly). So be careful about if it is singular or plural when you are using them, because both has different usage.

Is there a simple Windows app development C++ example of getting a file’s attributes?

This method is very useful when you want to check file attributes. Here is the simple full C++ Builder VCL Example,

We can use this method with path properties of other components. For example, here is a full example with OpenDialog componant that uses it’s FileName property,

In this example, user selects file by using OpenDialog file browser and it tries to check if this file attribute has faReadOnly feature.

RAD Studio C++ Builder is a great environment for learning to use C++ and is also powerful enough for all your professional and beginner development needs.
You can download and use the latest C++ Builder Community Edition free.
You can download and try the C++ Builder trial version 30 days.

close

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial

Free C++Builder Community Edition

About author

33+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux and some other operating systems. Dr. Yilmaz Yoru was born in 1974, Eskisehir-Turkey. He graduated from the department of Mechanical Engineering of Eskisehir Osmangazi University in 1997. One year later he started to work in the same university as an assistant. He received his MSc and PhD degrees from the same department of the same university. He has married and he is a father of a son. Some of his interests are Programming, Thermodynamics, Fluid Mechanics and Artificial Intelligence. He also likes the graphical 2D & 3D design and high-end innovations.
Related posts
C++C++17Introduction to C++Learn C++

How Do You Run A C++ Program?

CC++Introduction to C++Learn C++

Who Wrote The C Programming Language?

CC++Introduction to C++Language FeatureLearn C++

Is C A High Level Programming Language?

CC++Introduction to C++Learn C++

How To Run A C Program in Command Prompt