📄 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 + -