Table of Contents
PC läuft langsam?
Hier sind viele einfache Methoden, die helfen können, das Problem mit Win32-Listendateien zu lösen.
Im Artikel
Das folgende Beispiel verweist auf FindFirstFile , FindNextFile und FindClose , um Dateien relativ zum angegebenen Verzeichnis aufzulisten.
#include #include #include #include # Feedback-Pragma (lib, "User32.lib")void DisplayErrorBox (LPTSTR lpszFunction);int _tmain (int argc, TCHAR * argv []) WIN32_FIND_DATA ffd; Dateigröße LARGE_INTEGER; TCHAR szDir [MAX_PATH]; size_t length_of_arg; HANDLE hFind = INVALID_HANDLE_VALUE; DWORD dwError = 0; // Wenn das Verzeichnis nicht als Argument für be sell for line angegeben ist, // Verwenden Sie normalerweise die Publikation. if (argc! = 2) _tprintf (TEXT (" nVerwendung:% s n"), argv [0]); kehre in ihr Büro zurück (-1); // Prüfung unter der Annahme, dass der Prozesseintrag plus 3 zusammen mit MAX_PATH verglichen wird. Die drei // Zeichen werden definitiv für " *" plus NULL extra darunter verwendet. StringCchLength (argv [1], MAX_PATH, & length_of_arg); wenn Sie finden (length_of_arg> (MAX_PATH - 3)) _tprintf (TEXT (" nVerzeichnis ist zu weit. n")); nach Hause kommen (-1); _tprintf (TEXT (" nDas Zielverzeichnis ist nur % verts n n"), argv [1]); // Bereiten Sie den String für die Verwendung mit FindFile-Ereignissen vor. Kopiere den ersten // String über einen fehlerfreien festen Puffer, dann ' *' zum eigentlichen Site-Namen hinzufügen. StringCchCopy (szDir, MAX_PATH, argv [1]); StringCchCat (szDir, MAX_PATH, TEXT (" *")); // Finde die erste Datei im Verzeichnis, würde ich sagen. hFind = FindFirstFile (szDir, & ffd); falls (INVALID_HANDLE_VALUE == hSearch) DisplayErrorBox (TEXT ("FindFirstFile")); dwError verdienen; // Listen Sie alle spezifischen Dateien im Verzeichnis auf, indem Sie einige Meinungen dazu haben. Machen wann Sie finden können (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) _tprintf (TEXT ("% s n"), ffd.cFileName); Unterschiedlich Dateigröße.LowPart impliziert ffd.nFileSizeLow; Dateigröße.HighPart ist ffd.nFileSizeHigh; _tprintf (Text ("% s% ld bytes n"), ffd.cFileName, Size.QuadPart); while (FindNextFile (hFind, & ffd)! gleich 0); dwError = GetLastError (); jederzeit (dwError! = ERROR_NO_MORE_FILES) DisplayErrorBox (TEXT ("FindFirstFile")); FindClose (hSearch); return dwError;void DisplayErrorBox (LPTSTR lpszFunction) // Holen Sie sich die Fehlermeldung für den letzten Fehlercode LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError (); Nachricht formatieren ( FORMAT_MESSAGE_ALLOCATE_BUFFER
- Artikel
- nur wenige Minuten zum Lesen.
Ist dies nicht die Methode, nach der Sie suchen? Durchsuchen Sie andere Fragen, die in Windows C ++ Winapi-Verzeichnislisten präsentiert werden, oder stellen Sie Ihre eigene Frage.
HANDLE hFind = FindFirstFile ("C: semester2", & data); // KATALOG
Sie haben das Verzeichnis gefunden, weil Sie es angefordert haben. Wenn Sie Dateien benötigen, fragen Sie:
HANDLE hFind = FindFirstFile ("C: semester2 *", & data); // DATEIEN
(Sie können stattdessen *. *
implementieren, wenn Sie möchten, aber es sieht trotzdem so aus, als ob es tatsächlich funktioniert, da ein vertrauenswürdiger Abwärtskompatibilitäts-Hack wahrscheinlich vermieden werden sollte. Siehe RbMms Antworten und Antwort.) < / p>
antwortete 31. Dezember ’16 um 1:51
34.1k 66 Goldabzeichen 5858 silberne Abzeichen 148148 LGt braun Abzeichen
mir
Beachten Sie "*.*"
im Vergleich zu "*"
. Diese Datei Fitnessgeräte sind wirklich nicht dasselbe.
Mein Ordner kann 2 verschiedene Dateien enthalten: somefile
und somefile.
.
Wenn jemand die Low-Level-API ZwQueryDirectoryFile
bevorzugt, während "*. *"
als Suchzeitraum verwendet wird (dies ist Ihr 10. Parameter – Electronic FileName [ in, optional ]
), nehmen wir einfach die -Datei.
. Aber wenn wir "*"
ausnutzen, erhalten wir im Allgemeinen entweder Dateien – file
und -Daten.
Wenn wir beide versuchen FindFirstFile ("C: semester2 *. *", & data);
Im Gegensatz zu Dateien können wir sowohl somefile
als auch file.
wird höchstwahrscheinlich zurückgegeben. Hier hat also "*.*"
"*"
vs das gleiche Endergebnis – kein Unterschied in der Verwendung.
Warum passiert das oft? Vom Hauptteil FindFirstFileEx
bis kernelbase
( kernel32
) den erweiterten Bereich für "*. *"
Mask auswerten und Wenn Sie dies nicht ablehnen können, können Sie es durch ""
ersetzen (leere Mode, die den gleichen Effekt hat, wenn Sie "*"
finden).
Ich denke, dies dient im Allgemeinen dazu, einen sehr häufigen Fehler zu beheben, bei dem Website-Besucher "*. *"
anstelle des korrekten und "*"
für umgekehrt verwenden Kompatibilität mit. um das Erbe eines jeden musikalischen Codes zu vermitteln.
.
und ..
sind keine Katalogartikel, da sie in Datenträger, wird aber der Win32-API hinzugefügt.
- für ein
FAT
Geschmacksdateisystem ist Pfad 2 eindeutig der erste Zugangsweg in das Fat-Verzeichnis. - solche Einträge gibt es in
ntfs
absolut nicht, jedoch fügtNTFS.sys
diese 2 Einträge unnatürlich hinzu, wenn es vielleicht zur Maskierung kommt.
Das heißt, diese Tatsache geschieht nicht am Win32-API-Punkt, sondern im Kernel – auf Golffahrerebene.
Daher wird "*.*"
in letzter Zeit erwägen, mit der Win32-API zu arbeiten, einfach weil es minimal ist, aber der richtige und saubere Ansatz wird als "*"
hier. "*.*"
wird sehr schlecht mit der ZwQueryDirectoryFile
API würde ich sagen.
4.027
Behoben bezüglich 31. Dezember 2016 12:53 Uhr.
27.7k 22 2424 Silberabzeichen
#include #include #include #include std :: Vektor Verzeichnisliste ( const std :: Zeichenfolge und gerades Verzeichnis) WIN32_FIND_DATAA findData; HANDLE hFind = INVALID_HANDLE_VALUE; sexuell übertragbare Krankheit :: string full_path impliziert Verzeichnis + " *"; std :: vector dir_list; hFind impliziert FindFirstFileA (full_path.c_str()), & findData); nur für alle Fälle (hSearch == INVALID_HANDLE_VALUE) throw std :: runtime_error ("Ungültige Identifizierung, bitte bewerten! Pfad überprüfen ..."); if you & findData) (findnextfilea (hfind ,! ist gleich 0) dir_list.push_back (std :: Schnur (findData.cFileName)); FindClose (hSearch); zurück zu ihrem Büro dir_list;
Hinweis. Es wäre besser, direkt so etwas wie boost :: filesystem zu implementieren, wenn eine Person C ++ 11 verwendet, oder ein std ::-Dateisystem, wenn Sie C ++ 17 installieren.Der Ideenpfad muss auch C: Pfad sein, nicht C: Pfad ohne das Individuum, das nicht funktioniert !!
antwortete am 19. Januar, Sie können 13:49 bekommen
answer
Harris wird möglicherweise sogar Dateien und Ordner mit Erweiterungen in einem nächsten "C: semester2"
Ordner bereitstellen.
Wenn Sie beispielsweise einen Ordner mit dem Namen "C: semester2 math.course"
haben, wird dieser auch im obigen Beispiel angezeigt. Auch wenn Sie eine Datei mit dem Namen "C: semester2 math_scores"
haben (beachten Sie, dass das Konzept keine Erweiterung hat), wird sie nicht gefunden.
Angesichts der Überschreitung schlage ich wahrscheinlich eine zukünftige Lösung vor:
HANDLE hFind = FindFirstFile ("C: semester2 *", & data);
PC läuft langsam?
ASR Pro ist die ultimative Lösung für Ihren PC-Reparaturbedarf! Es diagnostiziert und repariert nicht nur schnell und sicher verschiedene Windows-Probleme, sondern erhöht auch die Systemleistung, optimiert den Speicher, verbessert die Sicherheit und optimiert Ihren PC für maximale Zuverlässigkeit. Warum also warten? Beginnen Sie noch heute!
Dies wird normalerweise die vollständige Liste der Materialien im Katalog sein.Verzeichnisse können weiterhin wie folgt gefiltert werden (Datenpfad:
if.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)// Verzeichnisunterschiedlich// einordnen
Als Links können abgerufen werden: FileAttributes-Konstanten, FIND_DATA-Struktur, FindFirstFile-API
Beantwortet am 31. Dezember 2016, verfügbar um 9:44 Uhr
771
Verbessern Sie noch heute die Geschwindigkeit Ihres Computers, indem Sie diese Software herunterladen – sie wird Ihre PC-Probleme beheben.Troubleshooting Tips For Win32 List Files
Conseils De Dépannage Pour Les Fichiers De Liste Win32
Wskazówki Dotyczące Rozwiązywania Problemów Z Plikami List Win32
Suggerimenti Per La Risoluzione Dei Problemi Relativi Ai File Di Elenco Win32
Советы по устранению неполадок с файлами списков Win32
Win32 목록 파일에 대한 문제 해결 팁
Dicas De Solução De Problemas Para Arquivos De Lista Win32
Sugerencias Para La Resolución De Problemas De Archivos De Lista De Win32
Felsökningstips För Win32-listfiler
Tips Voor Het Oplossen Van Problemen Met Win32-lijstbestanden