?? asl_file.h
字號:
//-----------------------------------------------------------------------------
//
// ____ Azure Star Game Engine 藍星游戲引擎 ____
//
// Copyright (c) 2006, 藍星工作室
// All rights reserved.
//
// 文件名稱: asl_file.h
// 摘 要: 文件類定義
//
// 當前版本: 1.0
// 作 者: 湯 祺
// 創建日期: 2006-7-20
//
//-----------------------------------------------------------------------------
#ifndef ASL_FILE_INCLUDE
#define ASL_FILE_INCLUDE
#pragma once
#include "asl_utils.h"
//-----------------------------------------------------------------------------
namespace ASL
{
//-----------------------------------------------------------------------------
// 類名: ASLFile
// 功能: 文件類
// 本類代表一個已讀入內存的文件. 用戶可以獲得文件在內存中的位置, 從而取
// 得需要的內容. 取文件內容的方法包括直接取緩沖區指針, 調用讀字符, 讀行,
// 讀塊函數等. 可以通過文件加載器ASLFileLoader來加載文件創建本類對象,
// 用戶也可以用自己的IO技術來創建本類對象. ASL庫中所有文件操作均通過本
// 類進行.
//-----------------------------------------------------------------------------
class ASLFile
{
// 構造/析構函數
public:
ASLFile(LPCSTR szName, BYTE* pBuffer, int nSize, bool bDelete = true);
~ASLFile();
// 禁用拷貝構造函數和賦值函數, 無實現
private:
ASLFile(const ASLFile&);
ASLFile& operator=(const ASLFile&);
// 公有函數
public:
// 從當前位置讀取指定字節數
bool Read(void *pBuffer, int nSize);
// 從當前位置讀取一個字符
bool GetCh(char &ch);
// 從當前位置讀取一行
bool GetLine(char *pBuffer, int nBufSize);
// 取文件大小
inline int GetSize(void) const { return m_nSize; }
// 取文件內容指針
inline const BYTE* GetPtr(void) const { return m_pBuffer; }
// 取文件名
inline LPCSTR GetName(void) const { return m_szFileName; }
// 將文件指針跳過指定字節數
inline void Skip(int size) { m_pCurrent += m_nSize; }
// 將文件指針跳到文件開始處
inline void Begin(void) { m_pCurrent = m_pBuffer; }
// 是否到文件尾
inline bool IsEnd(void) const { return m_pCurrent >= m_pBuffer + m_nSize; }
// 成員變量
private:
char m_szFileName[MAX_PATH]; // 文件名
int m_nSize; // 文件大小
BYTE *m_pBuffer; // 文件內容
BYTE *m_pCurrent; // 文件指針
bool m_bDelete; // 析構時是否釋放緩沖區
}; // ASLFile類定義結束
//-----------------------------------------------------------------------------
// 類名: ASLFileLoader
// 功能: 文件加載器類
// 本類對文件IO進行了封裝, 提供讀取磁盤文件的能力, 支持ZIP格式的壓縮
// 文件讀取. 本類將返回ASLFile類對象代表已讀取的文件供其他對象調用.
// 通過本類加載的ASLFile對象, 需要用戶自行(調用delete)釋放空間.
//-----------------------------------------------------------------------------
class ASLFileLoader
{
// 構造/析構函數
public:
ASLFileLoader();
~ASLFileLoader();
// 公有函數
public:
// 設置Zip文件(相對于當前目錄)
void SetZipCur(LPCSTR szFileName, LPCSTR szPassword = "");
// 設置Zip文件(相對于可執行文件所在目錄)
void SetZipApp(LPCSTR szFileName, LPCSTR szPassword = "");
// 設置文件目錄(相對于當前目錄)
void SetDirCur(LPCSTR szDirName);
// 設置文件目錄(相對于可執行文件所在目錄)
void SetDirApp(LPCSTR szDirName);
// 打開一個文件
ASLFile* Load(LPCSTR szFileName) throw(ASLFileException);
// 成員變量
private:
char m_szDir[MAX_PATH]; // 目錄名
char m_szZip[MAX_PATH]; // Zip文件名
char m_szPwd[MAX_PATH]; // Zip文件密碼
};
} // namespace ASL
#endif // ASL_FILE_INCLUDE
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -