增加新形式的LoadFileToMemory函数

This commit is contained in:
2020-06-05 11:00:58 +08:00
parent 34eef8fdab
commit 12a766d021
2 changed files with 27 additions and 19 deletions

View File

@@ -163,6 +163,7 @@ namespace hgl
bool FileCanWrite(const OSString &); ///<检测文件是否可写 bool FileCanWrite(const OSString &); ///<检测文件是否可写
bool FileCanExec(const OSString &); ///<检测文件是否可执行 bool FileCanExec(const OSString &); ///<检测文件是否可执行
void *LoadFileToMemory(const OSString &,int64 &,bool append_zero=false); ///<加载一个文件到内存
int64 LoadFileToMemory(const OSString &,void **,bool append_zero=false); ///<加载一个文件到内存 int64 LoadFileToMemory(const OSString &,void **,bool append_zero=false); ///<加载一个文件到内存
int64 SaveMemoryToFile(const OSString &,const void *,const int64 &); ///<保存一块内存成文件 int64 SaveMemoryToFile(const OSString &,const void *,const int64 &); ///<保存一块内存成文件
int64 SaveMemoryToFile(const OSString &,void **,const int64 *,const int &); ///<保存多块内存成一个文件 int64 SaveMemoryToFile(const OSString &,void **,const int64 *,const int &); ///<保存多块内存成一个文件

View File

@@ -53,6 +53,29 @@ namespace hgl
return(true); return(true);
} }
void *LoadFileToMemory(const OSString &filename,int64 &size,bool append_zero)
{
io::FileInputStream fs;
if(!fs.Open(filename))
return(nullptr);
size=fs.GetSize();
char *fb=new char[append_zero?size+1:size];
if(fs.Read(fb,size)==size)
{
if(append_zero)
fb[size]=0;
return fb;
}
delete[] fb;
return(nullptr);
}
/** /**
* 加载一个文件到内存,文件数据请自己delete[]掉 * 加载一个文件到内存,文件数据请自己delete[]掉
* @param filename 要载入的文件名称 * @param filename 要载入的文件名称
@@ -61,27 +84,11 @@ namespace hgl
*/ */
int64 LoadFileToMemory(const OSString &filename,void **buf,bool append_zero) int64 LoadFileToMemory(const OSString &filename,void **buf,bool append_zero)
{ {
io::FileInputStream fs; int64 size;
if(!fs.Open(filename)) *buf=LoadFileToMemory(filename,size,append_zero);
return(-1);
const int64 size=fs.GetSize(); return size;
char *fb=new char[append_zero?size+1:size];
if(fs.Read(fb,size)==size)
{
*buf=fb;
if(append_zero)
fb[size]=0;
return(size);
}
delete[] fb;
return(-1);
} }
/** /**