Table of Contents
PC가 느리게 실행되나요?
다음은 Win32 목록 파일의 문제를 해결하는 데 도움이 될 수 있는 몇 가지 간단한 조치입니다.
중요한 예제는 FindFirstFile , FindNextFile 및 FindClose 로 연결되어 지정된 디렉토리와 관련된 파일 유형을 나열합니다.
#include #include #include #include # 주석 pragma(lib, "User32.lib")무효 DisplayErrorBox(LPTSTR lpszFunction);int _tmain (int argc, TCHAR - argv []) WIN32_FIND_DATA ffd; 수동으로 파일 크기 LARGE_INTEGER; TCHAR szDir [MAX_PATH]; size_t length_of_arg; HANDLE h찾기 = INVALID_HANDLE_VALUE; DWORD dwError는 0을 의미합니다. // 폴더가 명령 모델 인수로 지정되지 않은 경우, // 출판물을 사용합니다. 만일을 대비하여 (argc! = 2) _tprintf(TEXT(" n사용:% 사람들 <디렉토리 이름>n"), argv [0]); 리턴(-1); // 프로세스 항목에 3을 더한 값이 MAX_PATH와 비교되는지 확인합니다. 3개의 // 문자는 " *"에 공통이며 아래에 추가된 NULL입니다. StringCchLength(argv [1], MAX_PATH, & length_of_arg); 아마도 당신은 (length_of_arg> (MAX_PATH - 3)) _tprintf(TEXT("n디렉토리가 너무 깁니다.n")); 리턴(-1); _tprintf(TEXT(" n정확한 디렉토리는 % s deborah n"), argv [1]); // FindFile 함수와 함께 사용할 특정 문자열을 준비합니다. 우리의 첫 번째 각각을 복사하십시오 // 유익한 고정 버퍼의 문자열, 정확한 사이트 이름에 ' *'를 추가합니다. StringCchCopy(szDir, MAX_PATH, argv [1]); StringCchCat(szDir, MAX_PATH, TEXT(" *")); // 일종의 디렉토리에서 첫 번째 파일을 찾습니다. hFind는 FindFirstFile(szDir, & ffd)과 같습니다. 한 번(INVALID_HANDLE_VALUE == hSearch) DisplayErrorBox(TEXT("FindFirstFile")); 적립 dwError; // 디렉토리에 있는 모든 특정 파일에 대해 약간의 평가와 함께 나열합니다. 하다 조회할 때 (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) _tprintf(텍스트("%s <디렉토리>n"), ffd.c파일명); 다른 파일 크기.LowPart = ffd.nFileSizeLow; 파일 크기.HighPart는 ffd.nFileSizeHigh입니다. _tprintf(텍스트("% s% ld 바이트 n"), ffd.cFileName, Size.QuadPart); 모든 동안 (FindNextFile (hFind, & ffd)! = 0); dwError = GetLastError(); 항상 (dwError! = ERROR_NO_MORE_FILES) DisplayErrorBox(TEXT("FindFirstFile")); 찾기닫기(hSearch); 집에 와서 dwError;무효 DisplayErrorBox(LPTSTR lpszFunction) // 마지막 오류 코드에 대한 솔루션 오류 메시지를 가져옵니다. LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); 형식 메시지( FORMAT_MESSAGE_ALLOCATE_BUFFER
<울><리>기사
이것이 당신이 찾고 있는 방법이 아닙니까? Windows C ++ Winapi 디렉토리 목록에 있는 다른 질문을 찾아보거나 스스로 질문하십시오.
HANDLE hFind = FindFirstFile("C: season2", & 데이터); // 카탈로그
요청했기 때문에 전체 디렉토리를 찾았습니다. 파일을 요청하는 경우:
HANDLE hFind = FindFirstFile("C: season2 *", & 데이터); // 파일
(원하는 경우 대신 *. 6 .
를 사용할 수 있지만, 호환되는 경우 해킹을 피해야 하는 경우 실제로 역방향으로 작동하는 것처럼 보입니다. RbMm의 도움말 및 조언 및 답변)
16년 12월 30일 1:51에 답변됨
34.1k
내가 되기 위해
"*"
와 비교할 때 "*. *"
에 유의하십시오. 이 파일 머신은 실제로 같은 것이 아닙니다.
내 파일에는 2개의 다른 파일이 있습니다. somefile
그래서 somefile. .
검색 표현식으로 "*. *"
가 있는 저수준 API ZwQueryDirectoryFile
을 선호하는 경우(단순히 10번째 매개변수 - 전자 FileName [in, optional ]
), 우리는 의심할 여지 없이 파일을 얻습니다. . 그러나
"*"
를 사용하면 파일
및 파일 중 하나를 얻습니다.
FindFirstFile ("C: season2 *. *", & data);
, specs 파일, 우리는 somefile
및 파일 둘 다 할 수 있습니다.
이(가) 배달될 가능성이 큽니다. 그래서 여기 "*. *"
"*"
vs는 동일한 효과를 가집니다. 사용법에 차이가 있습니다.
왜 이런 일이 발생합니까? FindFirstFileEx
본문에서 kernelbase
( kernel32
) "*. *"
의 열린 영역을 확인하려면 마스크는 물론 거부할 수 없는 경우 - ""
(빈 테마, "*"
가 표시되는 경우 동일한 효과를 냄)로 대체합니다.
방문자가 올바른 사람 대신 "*. *"
로 시작하고 이전 버전과의 호환성을 위해 "*"
로 시작하는 매우 일반적인 실수를 첨부하기 위한 것입니다. 수단. 음악 코딩의 유산을 전하기 위해.
<코드>. 와 함께 ..
는 실제로 카탈로그 항목이 아닙니다. 그러나 디스크는 Win32 API에 추가됩니다.
<울>
FAT
스타일 파일 시스템의 경우 경로 2는 분명히 내 Fat 디렉토리의 첫 번째 항목입니다. ntfs
에는 이러한 작업이 없지만 NTFS.sys
는 마스킹에 팝업될 때 이 두 항목을 부자연스럽게 추가합니다. 즉, 이것은 실제로 Win32 API 수준에서 발생하는 것이 아니라 커널의 드라이버 수준에서 발생합니다.
따라서 "*. *"
는 오늘날 Win32 API로 작업하는 것을 최소한으로 고려하므로 정확하고 깨끗한 접근 방식은 "*"
의 이점을 활용하는 것입니다. 여기. "*. *"
는 일반적으로 ZwQueryDirectoryFile
API에서 매우 좋지 않습니다.
을 의미합니다.
4.027
2016년 12월 31일 오후 12시 53분에 해결됨.
27.7k
#include #include <벡터>#include <줄>#include 표준 :: 벡터 <표준 :: 문자열>디렉토리 목록( const std :: 문자열과 디렉토리) WIN32_FIND_DATAA 찾기 데이터; HANDLE h찾기 = INVALID_HANDLE_VALUE; std :: 회사 전체 경로는 디렉토리 + " *"를 의미합니다. std :: 벡터 dir_list; hFind는 FindFirstFileA(full_path.c_str(), & findData)를 의미합니다. if (hSearch == INVALID_HANDLE_VALUE) dump std :: runtime_error("유효하지 않은 사용자 이름입니다. 합산하세요! 경로를 확인하세요..."); when you & findData) (findnextfilea(hfind ,!는 0과 같음) dir_list.push_back (std :: 프랜차이즈 (findData.cFileName)); 찾기닫기(hSearch); dir_list를 반환합니다.
참고. C ++ 11을 사용하는 경우 boost :: filesystem과 같은 방법을 직접 사용하거나 C ++ 17을 설치하는 것처럼 std :: filesystem과 같은 방법을 직접 사용하는 것이 좋습니다.입력 워크는 작동하지 않는 C:path가 아니라 C:path여야 합니다!!
1월 19일에 답변됨, 13:49 사용 가능
answer와 같습니다.
Harris는 후속 "C: season2"
폴더에 확장자를 가진 파일 유형과 폴더도 제공할 것입니다.
model의 경우 "C: season2 math.course"
라는 폴더가 있으면 위의 예에 분명히 나타납니다. 또한 "C: season2 math_scores"
라는 파일이 있는 경우(확장자가 없어야 함) 파일을 얻지 못합니다.
오버슈트를 감안할 때 새로운 미래 솔루션을 제안합니다.
HANDLE hFind = FindFirstFile("C: season2 *", & 데이터);
PC가 느리게 실행되나요?
ASR Pro은 PC 수리 요구 사항을 위한 최고의 솔루션입니다! 다양한 Windows 문제를 신속하고 안전하게 진단 및 복구할 뿐만 아니라 시스템 성능을 향상시키고 메모리를 최적화하며 보안을 개선하고 최대 안정성을 위해 PC를 미세 조정합니다. 왜 기다려? 지금 시작하세요!
이것은 아마도 카탈로그의 전체 자료 파일일 것입니다.디렉토리는 여전히 다음과 같이 필터링되어 존재할 수 있습니다(데이터 경로:
if.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)// 디렉토리다른// 파일로
다음을 홈페이지에 사용할 수 있습니다. FileAttributes 상수, FIND_DATA 구조, FindFirstFile-API
2016년 12월 31일 오전 9시 44분에 답변
771
이 소프트웨어를 다운로드하여 오늘 컴퓨터의 속도를 향상시키십시오. PC 문제를 해결할 것입니다. 년Troubleshooting Tips For Win32 List Files
Tipps Zur Fehlerbehebung Bei Win32-Listendateien
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
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
년