CMCore/inc/hgl/io/RandomAccessFile.h
2019-08-19 19:19:58 +08:00

48 lines
2.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef HGL_IO_RANDOM_ACCESS_FILE_INCLUDE
#define HGL_IO_RANDOM_ACCESS_FILE_INCLUDE
#include<hgl/io/InputStream.h>
#include<hgl/io/OutputStream.h>
#include<hgl/io/FileAccess.h>
namespace hgl
{
namespace io
{
/**
* 随机文件访问</p>
* 可同时被DataInputStream/DataOutputStream包含引用但需注意他们将共用一个访问指针
*/
class RandomAccessFile:public InputStream,public OutputStream
{
protected:
SharedPtr<FileAccess> file; ///<文件访问指针
public:
RandomAccessFile();
RandomAccessFile(SharedPtr<FileAccess> &);
~RandomAccessFile();
virtual bool Open(const OSString &); ///<打开文件
virtual void Close(); ///<关闭文件
virtual int64 Read(void *,int64); ///<读取数据
virtual int64 Write(const void *,int64); ///<写入数据
virtual int64 Read(int64,void *,int64); ///<在指定位置读取指定长度的数据
virtual int64 Write(int64,const void *,int64); ///<在指定位置写入指定长度的数据
virtual bool CanSeek()const; ///<是否可移动访问指针
virtual bool CanRestart()const; ///<是否可复位访问
virtual bool CanSize()const; ///<是否可访问文件长度
virtual int64 Tell()const; ///<取当前位置
virtual int64 GetSize(); ///<取得文件长度
virtual bool Restart(); ///<复位访问指针
virtual int64 Seek(int64,SeekOrigin=SeekOrigin::Begin); ///<移动访问指针
};//class RandomAccessFile
}//namespace io
}//namespace hgl
#endif//HGL_IO_RANDOM_ACCESS_FILE_INCLUDE