C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75759] Re:폴더개수 구해서 일정 개수 삭제하는 방법이 있나요?
정성훈.해미 [sage5nor] 2180 읽음    2020-01-29 09:49
폴더 갯수는 파일 갯수 구하는 거랑 같은 방법으로 구했을 것이고
아마 폴더 삭제 부분이 잘 안되실 거 같습니다.

폴더를 지우는 함수가
빈 폴더일 때만 지워집니다.
폴더 안에 파일 또는 하위 폴더가 있으면 안 지워집니다.

빈 폴더가 아니더라도 삭제하는 함수를 만들어서 사용해 보세요.


혹시나 도움이 되실까 해서
제가 만들어서 쓰는 함수를 적어 드립니다.
고급스럽진 않지만 그래도 쓸만 합니다.


// 지정한 날짜시간보다 오래된 파일, 폴더 모두 지우기
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 님이 쓰신 글 :
: 파일같은 경우에는 제가 설정한 개수를 넘으면 자동으로 몇개씩 삭제 되게 해놧는데
:
: 폴더도 비슷하게 짜봣더니 좀 다르게 해야하는지 안되네요.
:
: 혹시 폴더 개수를 확인하는법이 있을까요?
:
: 파일처럼 똑같이 설정 폴더개수를 넘으면 자동으로 폴더 몇개씩 삭제되게 하려하는데
:
: 도움주시면 감사하겠습니다.

+ -

관련 글 리스트
75758 폴더개수 구해서 일정 개수 삭제하는 방법이 있나요? LDI 2003 2020/01/29
75759     Re:폴더개수 구해서 일정 개수 삭제하는 방법이 있나요? 정성훈.해미 2180 2020/01/29
75760         Re:Re:폴더개수 구해서 일정 개수 삭제하는 방법이 있나요? LDI 2103 2020/01/29
75761             Re:Re:Re:폴더개수 구해서 일정 개수 삭제하는 방법이 있나요? 정성훈.해미 2277 2020/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.