c++에서 windows api 를 사용 하여 지정 한 폴 더 와 하위 폴 더 의 파일 을 옮 겨 다 닙 니 다.
#include "stdafx.h"
#include <iostream>
#include "windows.h"
#include <string.h>
#include <Strsafe.h>
using namespace std;
// ,
void TraverseDirectory(wchar_t Dir[MAX_PATH])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind=INVALID_HANDLE_VALUE;
wchar_t DirSpec[MAX_PATH]; //
DWORD dwError;
StringCchCopy(DirSpec,MAX_PATH,Dir);
StringCchCat(DirSpec,MAX_PATH,TEXT("\\*")); // \*
hFind=FindFirstFile(DirSpec,&FindFileData); //
if(hFind==INVALID_HANDLE_VALUE) // hFind ,
{
FindClose(hFind);
return;
}
else
{
while(FindNextFile(hFind,&FindFileData)!=0) //
{
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0&&wcscmp(FindFileData.cFileName,L".")==0||wcscmp(FindFileData.cFileName,L"..")==0) // && "."|| "."
{
continue;
}
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0) //
{
wchar_t DirAdd[MAX_PATH];
StringCchCopy(DirAdd,MAX_PATH,Dir);
StringCchCat(DirAdd,MAX_PATH,TEXT("\\"));
StringCchCat(DirAdd,MAX_PATH,FindFileData.cFileName); //
TraverseDirectory(DirAdd); //
}
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==0) //
{
wcout<<Dir<<"\\"<<FindFileData.cFileName<<endl; //
}
}
FindClose(hFind);
}
}
int _tmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
{
locale loc( "chs" ); // , wchar
wcout.imbue( loc );
TraverseDirectory(L"C:\\Users\\v_tianboli\\Desktop\\windows "); // ,
system("pause");
return 0;
}
상기 코드 가 내 컴퓨터 에서 실 행 된 결 과 는 다음 과 같다.다음은 다른 사람의 보충 이다.
C++어떤 폴 더 아래 의 하위 폴 더 와 모든 파일 을 읽 습 니 다.
_findnext 는 64 비트 시스템 에서 실 패 했 습 니 다.해결 방법 은//파일 핸들 long hFile=0 입 니 다.intptr 로 써 야 합 니 다.t hFile
// TestForOnlyC++.cpp : 。
//
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include<io.h>
using namespace std;
void getAllFiles(string path, vector<string>& files)
{
//
long hFile = 0;
//
struct _finddata_t fileinfo; //
string p; //string :assign(),
if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
{
do
{
if ((fileinfo.attrib & _A_SUBDIR)) //
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
{
files.push_back(p.assign(path).append("/").append(fileinfo.name));//
getAllFiles(p.assign(path).append("/").append(fileinfo.name), files);//
}
}
else //
{
files.push_back(p.assign(path).append("/").append(fileinfo.name));//
}
} while (_findnext(hFile, &fileinfo) == 0); // , 0, -1
_findclose(hFile);
}
}
//
int main()
{
string DATA_DIR = "E:/wangwy/GY/dataForGY/ 3/ 3";
vector<string> files;
//
char * DistAll = "AllFiles.txt";
getAllFiles(DATA_DIR, files);//
//ofstream ofn(DistAll); //
int size = files.size();
int FaiNum = 0;
//ofn << size << endl;
cout<< size << endl;
for (int i = 0; i<size; i++)
{
//ofn << files[i] << endl;
cout << files[i] << endl;
}
//ofn.close();
return 0;
}
c++에서 windows api 를 사용 하여 지정 한 폴 더 와 하위 폴 더 에 있 는 파일 을 옮 겨 다 니 는 글 을 소개 합 니 다.더 많은 c+windows api 가 지정 한 폴 더 내용 을 옮 겨 다 니 고 있 습 니 다.이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 원활 공사 & & 원활 공사 (차 트 법)모 성 은 도시 의 교통 상황 을 조사 하여 기 존의 도시 도로 통계 표를 얻 었 고 표 에는 모든 도로 가 직접 연 결 된 도시 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 도시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.