Visualizza la versione completa : [C] Uso di GetFileAttributes

13-01-2005, 16:17
ciao a tutti!
Io sto usando questa funzione

//Restituisce il numero di sottocartelle di una cartella data
//va richiamato ContaCartelle("C:\\Percorso\\*")
int ContaCartelle( char* percorsoRadice )
int risultato = 0;
WIN32_FIND_DATA FindFileData;

hFind = FindFirstFile( percorsoRadice, &FindFileData );

//Se il file è valido cerco al suo interno le cartelle
//Finché esistono ancora files
while (FindNextFile(hFind, &FindFileData) != 0)
//Se il file è una directory incremento il contatore
if ( GetFileAttributes( FindFileData.cFileName ) & FILE_ATTRIBUTE_DIRECTORY )

//Tolgo le due cartelle . e ..
//-1 perche il primo file non l'avevo conteggiato



return risultato;

Qualcuno mi sa dire perchè non mi differenzia le cartelle dai file ma mi conta tutto indistintamente?

13-01-2005, 22:32

13-01-2005, 22:58
The GetFileAttributes function retrieves attributes for a specified file or directory.

This function retrieves a set of FAT-style attribute information. The GetFileAttributesEx function can obtain other sets of file or directory attribute information.

DWORD GetFileAttributes(
LPCTSTR lpFileName // name of file or directory
[in] Pointer to a null-terminated string that specifies the name of a file or directory.
Windows NT/2000/XP: In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to nearly 32,000 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see File Name Conventions.

Windows 95/98/Me: This string must not exceed MAX_PATH characters.

Return Values
If the function succeeds, the return value contains the attributes of the specified file or directory.

If the function fails, the return value is INVALID_FILE_ATTRIBUTES. To get extended error information, call GetLastError.

The attributes can be one or more of the following values.

Attribute Meaning
FILE_ATTRIBUTE_ARCHIVE The file or directory is an archive file or directory. Applications use this attribute to mark files for backup or removal.
FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_DEVICE Reserved; do not use.
FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory.
FILE_ATTRIBUTE_ENCRYPTED The file or directory is encrypted. For a file, this means that all data streams in the file are encrypted. For a directory, this means that encryption is the default for newly created files and subdirectories.
FILE_ATTRIBUTE_HIDDEN The file or directory is hidden. It is not included in an ordinary directory listing.
FILE_ATTRIBUTE_NORMAL The file or directory has no other attributes set. This attribute is valid only if used alone.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED The file will not be indexed by the content indexing service.
FILE_ATTRIBUTE_OFFLINE The data of the file is not immediately available. This attribute indicates that the file data has been physically moved to offline storage. This attribute is used by Remote Storage, the hierarchical storage management software. Applications should not arbitrarily change this attribute.
FILE_ATTRIBUTE_READONLY The file or directory is read-only. Applications can read the file but cannot write to it or delete it. In the case of a directory, applications cannot delete it.
FILE_ATTRIBUTE_REPARSE_POINT The file has an associated reparse point.
FILE_ATTRIBUTE_SPARSE_FILE The file is a sparse file.
FILE_ATTRIBUTE_SYSTEM The file or directory is part of, or is used exclusively by, the operating system.
FILE_ATTRIBUTE_TEMPORARY The file is being used for temporary storage. File systems attempt to keep all of the data in memory for quicker access rather than flushing the data back to mass storage. A temporary file should be deleted by the application as soon as it is no longer needed.

When GetFileAttributes is called on a directory containing a volume mount point, the file attributes returned are those of the directory where the volume mount point is set, not those of the root directory in the target mounted volume. To obtain the file attributes of the mounted volume, call GetVolumeNameForVolumeMountPoint to obtain the name of the target volume. Then use the resulting name in a call to GetFileAttributes. The results will be the attributes of the root directory on the target volume.

Windows 95/98/Me: GetFileAttributesW is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.

Example Code
For an example, see Searching for Files and Changing File Attributes.

Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP. Also supported by Microsoft Layer for Unicode.

13-01-2005, 23:28
Ma dov'è l'errore nel codice postato?