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!
![](/wp-content/download4.gif)
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
![Willie Estrada](https://siliconvalleygazette.com/wp-content/uploads/willieestrada.jpg)