2024-12-21 10:04:04 +08:00
|
|
|
|
/*//===============================================================
|
|
|
|
|
|
|
|
|
|
|
|
<< FILE SET >>
|
|
|
|
|
|
|
|
|
|
|
|
FILE : FILESET.H, FILESET.CPP
|
|
|
|
|
|
DESC : <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
INIT BUILT DATE : 2007. 05. 02
|
|
|
|
|
|
LAST BUILT DATE : 2007. 05. 14
|
|
|
|
|
|
|
|
|
|
|
|
Copyright<EFBFBD><EFBFBD> 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
|
|
*///===============================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// INCLUDE
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#include "SYSBASEBASE.H"
|
|
|
|
|
|
#include "VARARG.H"
|
|
|
|
|
|
#include <MEMORY>
|
|
|
|
|
|
#include <LIMITS.H>
|
|
|
|
|
|
|
|
|
|
|
|
#pragma comment(lib, "VERSION.LIB")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// DEFINE
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
// DECLARATION
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
//*---------------------------------------------------------------
|
|
|
|
|
|
// TYPE : CLASS
|
|
|
|
|
|
// NAME : CFileSet
|
|
|
|
|
|
//*---------------------------------------------------------------
|
|
|
|
|
|
// DESC : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
|
|
|
|
|
// PRGM : B4nFter
|
|
|
|
|
|
//*---------------------------------------------------------------
|
|
|
|
|
|
class CFileSet
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
enum EF_BOMTYPE { // BOM (Byte Order Mark) Ÿ<><C5B8>
|
|
|
|
|
|
EV_BT_UTF8, // BOM - UTF-8
|
|
|
|
|
|
EV_BT_UTF16_LE, // BOM - UTF-16/UCS-2 (<28><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
EV_BT_UTF16_BE, // BOM - UTF-16/UCS-2 (<28><EFBFBD><F2BFA3B5><EFBFBD>)
|
|
|
|
|
|
// EV_BT_UTF32_LE, // BOM - UTF-32/UCS-4 (<28><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) // P.S.> <20>ʿ<EFBFBD> <20><> <20>߰<EFBFBD>
|
|
|
|
|
|
// EV_BT_UTF32_BE, // BOM - UTF-32/UCS-4 (<28><EFBFBD><F2BFA3B5><EFBFBD>) // P.S.> <20>ʿ<EFBFBD> <20><> <20>߰<EFBFBD>
|
|
|
|
|
|
EV_BT_NONE,
|
|
|
|
|
|
};
|
|
|
|
|
|
typedef struct FILEBOMTYPEDAT
|
|
|
|
|
|
{
|
|
|
|
|
|
EF_BOMTYPE m_eType;
|
|
|
|
|
|
BYTE m_btData[UCHAR_MAX];
|
|
|
|
|
|
BYTE m_nSize;
|
|
|
|
|
|
FILEBOMTYPEDAT(EF_BOMTYPE eType, const CVarArgA<UCHAR_MAX>* pData, BYTE nSize) {
|
|
|
|
|
|
// BASE_ASSERT(CHECK_LIMIT(eType, EV_BT_NONE), "Invalid!");
|
|
|
|
|
|
// BASE_ASSERT(NULL != pData, "Invalid!");
|
|
|
|
|
|
// BASE_ASSERT(0 < nSize, "Invalid!");
|
|
|
|
|
|
m_eType = eType;
|
|
|
|
|
|
::memcpy(m_btData, pData->GetMsg(), nSize);
|
|
|
|
|
|
m_nSize = nSize;
|
|
|
|
|
|
}
|
|
|
|
|
|
} *LPFILEBOMTYPEDAT;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CFileSet();
|
|
|
|
|
|
virtual ~CFileSet();
|
|
|
|
|
|
|
|
|
|
|
|
operator HANDLE() const;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
DWORD Open(
|
|
|
|
|
|
LPCTSTR lpszFileName,
|
|
|
|
|
|
BOOL bIsReadOnly = TRUE,
|
|
|
|
|
|
BOOL bIsAppend = FALSE,
|
|
|
|
|
|
BOOL bIsReadShare = TRUE
|
|
|
|
|
|
);
|
|
|
|
|
|
DWORD Open(
|
|
|
|
|
|
LPCTSTR lpszFileName,
|
|
|
|
|
|
DWORD dwDesiredAccess,
|
|
|
|
|
|
DWORD dwShareMode,
|
|
|
|
|
|
DWORD dwCreationDisposition,
|
|
|
|
|
|
DWORD dwFlagsAndAttributes,
|
|
|
|
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL,
|
|
|
|
|
|
HANDLE hTemplateFile = NULL
|
|
|
|
|
|
);
|
|
|
|
|
|
virtual VOID Close();
|
|
|
|
|
|
virtual BOOL Flush();
|
|
|
|
|
|
BOOL IsOpen() const;
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL GetFullPath(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
virtual BOOL GetDrive(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
virtual BOOL GetPath(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
virtual BOOL GetName(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
virtual BOOL GetExt(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
virtual BOOL GetTitle(/*out*/ LPTSTR lpszBuffer, DWORD nBufferSize) const;
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD GetPosition(/*out*/ ULONGLONG& u64FilePositon) const;
|
|
|
|
|
|
virtual DWORD GetTime(/*out*/ LPFILETIME lpstCreateFileTime, /*out*/ LPFILETIME lpstAccessFileTime, /*out*/ LPFILETIME lpstWriteFileTime) const;
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD Seek(DWORD dwMoveMethod, LONG lOffsetLow, LONG lOffsetHigh = 0, /*out*/ ULONGLONG* lpu64Offset = NULL);
|
|
|
|
|
|
virtual DWORD SetLength(ULONGLONG dwFileLength);
|
|
|
|
|
|
virtual DWORD GetLength(/*out*/ ULONGLONG& dwFileLength) const;
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD Read(/*out*/ LPVOID lpBuffer, /*int,out*/ DWORD& nBufferSize);
|
|
|
|
|
|
virtual DWORD Write(LPCVOID lpBuffer, /*int,out*/ DWORD& nBufferSize);
|
|
|
|
|
|
|
|
|
|
|
|
virtual DWORD LockRange(ULONGLONG uOffset, ULONGLONG uNumberOfBytes);
|
|
|
|
|
|
virtual DWORD UnlockRange(ULONGLONG uOffset, ULONGLONG uNumberOfBytes);
|
|
|
|
|
|
|
|
|
|
|
|
virtual EF_BOMTYPE SkipBOM();
|
|
|
|
|
|
virtual DWORD WriteBOM(EF_BOMTYPE eBomType);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
static DWORD GetTime(LPCTSTR lpszFileName, /*out*/ LPFILETIME lpstCreateFileTime, /*out*/ LPFILETIME lpstAccessFileTime, /*out*/ LPFILETIME lpstWriteFileTime);
|
|
|
|
|
|
static DWORD GetVersion(LPCTSTR lpszFileName, /*out*/ DWORD& dwFileVersion1, /*out*/ DWORD& dwFileVersion2, /*out*/ DWORD& dwFileVersion3, /*out*/ DWORD& dwFileVersion4);
|
|
|
|
|
|
static DWORD GetAttributes(LPCTSTR lpszFileName);
|
|
|
|
|
|
static BOOL SetAttributes(LPCTSTR lpszFileName, DWORD dwFileAttributes);
|
|
|
|
|
|
|
|
|
|
|
|
static BOOL Copy(LPCTSTR lpszSrcFileName, LPCTSTR lpszTgtFileName, BOOL pIsFailIfExist);
|
|
|
|
|
|
static BOOL Remove(LPCTSTR lpszFileName);
|
|
|
|
|
|
static BOOL Rename(LPCTSTR lpszOldFileName, LPCTSTR lpszNewFileName);
|
|
|
|
|
|
|
|
|
|
|
|
static BOOL GetTempName(LPCTSTR lpPathName, LPCTSTR lpPrefixString, UINT uUnique, /*out*/ LPTSTR lpTempFileName);
|
|
|
|
|
|
|
|
|
|
|
|
static LPFILEBOMTYPEDAT GetBomTypeDat(EF_BOMTYPE pBomType);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
VOID Reset();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
HANDLE m_hFile;
|
|
|
|
|
|
TCHAR m_szFileFullPath[MAX_PATH];
|
|
|
|
|
|
|
|
|
|
|
|
#pragma warning(disable:4251)
|
|
|
|
|
|
static FILEBOMTYPEDAT m_stBomTypeDat[EV_BT_NONE];
|
|
|
|
|
|
#pragma warning(default:4251)
|
|
|
|
|
|
};
|
|
|
|
|
|
|