시간 남아서 또 하나 올려봅니다
이건 좀 길다란 소스라 수정해서 사용하기엔 좀 무리가 있을것 같지만....
디렉토리 관련 작업에 유용한 기능을 제공해 주는
DirectoryService라는 클래스 소스 입니다
기본기능은 디렉토리 검색, 삭제, 생성 그리고 하부디렉토리규칙 검사 등 입니다
추가로 디렉토리 파일 동기화용 공용함수가 일부 추가되어 있습니다
나중에 디렉토리 동기화 소스도 올리도록 하겠습니다
이 소스는 역사가 좀 깊은데 중간에 파일필터 클래스를 포함시켜 만들었습니다
따라서 이 소스를 사용하시려면 밑에올린 파일필터 클래스를 포함시켜야 합니다
간단한 사용법은 파일내에 포함된 프로젝트를 열어보시면 아실수 있습니다
아래는 공용영역 리스트 입니다
/******** Internal Filter Control
********/
bool
ActiveFilter;
InternalFilterControl
Filter;
bool
ExceptLockFile;
/*****************************************/
bool __fastcall SetScanDirectory( char *DirPath
);
bool __fastcall SetNextDirectory( void
);
bool __fastcall SetNextDirectory( char *GetFullPath,
char *GetShortPath, short *DirIndex );
bool __fastcall
GetNextFileInfo( LPOBJECTINFO LPInfo );
void __fastcall
FindInitialize( void );
bool __fastcall Find( LPOBJECTINFO
LPInfo );
bool __fastcall GetFindException( LPOBJECTINFO
LPInfo ); // 디렉토리 정보 포함
// bool __fastcall FindConditionFirst(
LPFINDCONDITION Condition, LPOBJECTINFO LPInfo );
// bool __fastcall
FindConditionNext( LPOBJECTINFO LPInfo );
bool __fastcall
CreateMultiDirectory( char* FullDirecotryPath );
bool
__fastcall RemoveDirectory( char *DirPath, LPDWORD DeleteDirCount = NULL,
LPDWORD DeleteFileCount = NULL );
bool __fastcall
CheckExclusionSubDirecotryRule( const char* SourceDirectory, const char*
DestinationDirectory );
윽..... 확인해보니 StringPaster란 엉뚱한 함수도 사용되고 있습니다
함께 첨부합니다
역시 보시고 개선부분이나 문제점 있으면 알려주시면 감사드리겠습니다
즐프하세요
P.S1 중요사항 RemoveDirectory 사용은 조심하세요 잘못하면 다 날아갑니다 조심
P.S2 검색 속도에 상당히 신경을 썼는데요 기본적으로 현재 쓰기중인 파일은
스캔되지 않습니다. 대신 속도가 많이 느려지네요 파일활성화 핸들 확인법을 몰라
좀 무식하게 구현했거든요. 개선방법 아시면 좀 알려주세요^^;
공용 변수 ExceptLockFile를 false로 설정해 주시면 속도는 빨라집니다 참고해주세요