dateien in einem verzeichnis feststellen
-
ok danke. ich habe nun auch ein programm gefunden das die dateien im ordner anzeigt. es werden aber jetzt nicht alle dateien angezeigt. woran kann das liegen?
-
Hallo
woher sollen wir das ohne Quellcode wissen?
bis bald
akari
-
mmhh, ich verweise an dieser stelle mal auf die boost lib
check this out http://boost.org/libs/filesystem/doc/index.htm
habs selber erst vor kurzem getestet und funzt wunderbar

-
ok noch eine frage: woher weiß ich was ein verzeichnis und was eine datei ist? mir wird beides als datei angezeigt
-
was nutz du nun ? win32 api oder boost?
-
winapi
-
so da muss ich doch mal in meinen projekten wühlen...
WIN32_FIND_DATA w32fd; if( w32fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY ){ //datei ist ein ordner //mach irgenwas mit dem ordner } else{//datei ist eine datei //mach irgendwas mit der datei }w32fd.cFileName gibt nen cstring an...was der name der datei wäre...
guckst du hier: http://www.microsoft.com/germany/msdn/library/office/RekursiveDateisuche.mspx?mfr=true
und ich erinnere dich nochmal an boost...ist viel einfacher...und sollte plattformunabhängig sein
-
habs noch nicht auf die reihe bekommen boost mit in codeblocks zu linken.
-
welche file_attribute gibt es noch?
-
-
http://msdn2.microsoft.com/de-de/library/3k3z0k7a.aspx
und hier aus der winnt.h kopiert...
#define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 #define FILE_ATTRIBUTE_DEVICE 0x00000040 #define FILE_ATTRIBUTE_NORMAL 0x00000080 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 #define FILE_ATTRIBUTE_OFFLINE 0x00001000 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
-
und nochmal eine frage: im laufwerk c: dort habe ich nur windows und den standart programmordner, wird mir der ordner "programme" als datei angezeigt. warum?
-
ka. ohne source code ist das sehr schwer, wenn nicht gar unmöglich nachzuvollziehen...
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
#define _WIN32_WINNT 0x0501 #include <windows.h> #include <string.h> #include <stdio.h> #include <iostream> using namespace std; int main(int argc, char *argv[]) { WIN32_FIND_DATA FindFileData; HANDLE hFind = INVALID_HANDLE_VALUE; char DirSpec[MAX_PATH + 1]; // directory specification DWORD dwError; printf ("Target directory is %s.\n", argv[1]); strncpy (DirSpec, argv[1], strlen(argv[1])+1); strncat (DirSpec, "\\*", 3); hFind = FindFirstFile(DirSpec, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("Invalid file handle. Error is %u\n", GetLastError()); return (-1); } else { while (FindNextFile(hFind, &FindFileData) != 0) { if( FindFileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY ) { cout << "Directory: " << FindFileData.cFileName << "\n"; } else { cout << "File: " << FindFileData.cFileName << "\n"; } } dwError = GetLastError(); FindClose(hFind); if (dwError != ERROR_NO_MORE_FILES) { printf ("FindNextFile error. Error is %u\n", dwError); return (-1); } } return 0; }Das ist das gemeinte Programm. Ab und zu werden dort Ordner als Dateien angegeben oder habe ich etwas nicht berücksichtigt?
-
terites--; schrieb:
oder habe ich etwas nicht berücksichtigt?
Hast du. Die Dateiattribute sind Flags, die miteinander kombiniert werden können. Es reicht also nicht aus, auf Gleichheit mit FILE_ATTRIBUTE_DIRECTORY zu prüfen, denn damit erreichst du nur die Verzeichnisse, bei denen kein anderes Flag gesetzt ist.
Formulier die Prüfung so:
if( FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
-
ok verständlich aber was genau heißt das jetzt in logiksprache?
if( FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
& ist ja kein && also was sagt das dem compiler?
-
Hallo
das einfache & ist eine Bitoperation, genauer gesagt ein binäres AND.
In deinem Fall wird geprüft, ob die Bits die in FILE_ATTRIBUTE_DIRECTORY auf 1 stehen (und das ist genau eins), auch in FindFileData.dwFileAttributes gesetzt sind.
bis bald
akari