어렵게 접근하시네요 ^^*
간단하게 만들어 봤습니다.
int FileCount = 0;
int DirCount = 0;
TSearchRec sr;
if(FindFirst(AppCfg->AppPath + "*.*", faAnyFile, sr) == 0) {
try {
do {
if(sr.Name != "." && sr.Name != "..") {
if(sr.Attr & faDirectory) DirCount++;
else FileCount++;
}
} while(FindNext(sr) == 0);
}
__finally {
FindClose(sr);
}
}
LDI 님이 쓰신 글 :
: 폴더 삭제하는 부분 감사합니다!!! 근데 파일갯수 구하는것처럼 폴더 갯수 구해보려는데 안되는데 좋은 방법 있을까요?
:
: String fsrPath = "경로"
: int CntFound = FindFirst(fsrPath, faArchive, FCsr);
: int Found = FindFirst(fsrPath, faArchive, Fsr);
: int FolderTotal, FolderDelete;
:
: int Count = 0;
: while(CntFound == 0) // 파일 개수 찾는 반복문
: {
: ++Count;
: CntFound = FindNext(FCsr);
: }
:
: 이렇게해서 파일 개수 찾는데 폴더를 찾으려고 경로랑 이런거 바꿧는데 안되더라구요...
:
: 정성훈.해미 님이 쓰신 글 :
: : 폴더 갯수는 파일 갯수 구하는 거랑 같은 방법으로 구했을 것이고
: : 아마 폴더 삭제 부분이 잘 안되실 거 같습니다.
: :
: : 폴더를 지우는 함수가
: : 빈 폴더일 때만 지워집니다.
: : 폴더 안에 파일 또는 하위 폴더가 있으면 안 지워집니다.
: :
: : 빈 폴더가 아니더라도 삭제하는 함수를 만들어서 사용해 보세요.
: :
: :
: : 혹시나 도움이 되실까 해서
: : 제가 만들어서 쓰는 함수를 적어 드립니다.
: : 고급스럽진 않지만 그래도 쓸만 합니다.
: :
: :
: :
: : // 지정한 날짜시간보다 오래된 파일, 폴더 모두 지우기
: : void DeleteFiles(String APath, TDateTime ADT/* = Now()*/, bool ADelSubDir/* = true*/)
: : {
: : if(APath.IsEmpty()) return;
: :
: : TSearchRec sr;
: : if(FindFirst(APath + "*.*", faAnyFile, sr) == 0) {
: : try {
: : do {
: : if(sr.Name != "." && sr.Name != "..") {
: : // 폴더일 때
: : if(sr.Attr & faDirectory) {
: : String SubPath = APath + "\\" + sr.Name + "\\";
: : // 폴더 안의 파일 지우기(재귀호출)
: : DeleteFiles(SubPath, ADT, ADelSubDir);
: : // 하위폴더 지우기 옵션시 하위 폴더 지우기
: : if(ADelSubDir) RemoveDir(SubPath);
: : }
: : // 파일이 지정한 날짜시간보다 오래된 파일이면 지움
: : else if(sr.TimeStamp < ADT) DeleteFile(APath + "\\" + sr.Name);
: : }
: : } while(FindNext(sr) == 0);
: : }
: : __finally {
: : FindClose(sr);
: : }
: : }
: : }
: :
: :
: :
: :
: :
: :
: : LDI 님이 쓰신 글 :
: : : 파일같은 경우에는 제가 설정한 개수를 넘으면 자동으로 몇개씩 삭제 되게 해놧는데
: : :
: : : 폴더도 비슷하게 짜봣더니 좀 다르게 해야하는지 안되네요.
: : :
: : : 혹시 폴더 개수를 확인하는법이 있을까요?
: : :
: : : 파일처럼 똑같이 설정 폴더개수를 넘으면 자동으로 폴더 몇개씩 삭제되게 하려하는데
: : :
: : : 도움주시면 감사하겠습니다.