36 #if !defined(_FPDFAPI_MINI_) || (defined(_WIN32) && !defined(_FX_NO_WINDOWS_)) || _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || _FX_OS_ == _FX_ANDROID_ || _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ 95 #if _FX_OS_ != _FX_EMBEDDED_ 149 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_ 150 #if defined(_FX_LARGEFILE_SUPPORT_) 152 #define _FX_LARGEFILE_USED_ 155 #define FX_FILESIZE FX_INT64 156 #define FX_GETBYTEOFFSET32(a) ((FX_BYTE)((a>>16)>>16)) 157 #define FX_GETBYTEOFFSET40(a) ((FX_BYTE)(((a>>16)>>16)>>8)) 158 #define FX_GETBYTEOFFSET48(a) ((FX_BYTE)(((a>>16)>>16)>>16)) 159 #define FX_GETBYTEOFFSET56(a) ((FX_BYTE)((((a>>16)>>16)>>16)>>8)) 162 #define FX_FILESIZE FX_INT32 163 #define FX_GETBYTEOFFSET32(a) 0 164 #define FX_GETBYTEOFFSET40(a) 0 165 #define FX_GETBYTEOFFSET48(a) 0 166 #define FX_GETBYTEOFFSET56(a) 0 168 #elif _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_ || _FX_OS_==_FX_LINUX_EMBEDDED_ 169 #if defined(_FX_LARGEFILE_SUPPORT_) 171 #define _FX_LARGEFILE_USED_ 173 #ifndef _LARGEFILE_SOURCE 174 #define _LARGEFILE_SOURCE 176 #ifndef _LARGEFILE64_SOURCE 177 #define _LARGEFILE64_SOURCE 180 #if defined(_FX_LARGEFILE_SUPPORT_) 181 #define FX_GETBYTEOFFSET32(a) ((FX_BYTE)((a>>16)>>16)) 182 #define FX_GETBYTEOFFSET40(a) ((FX_BYTE)(((a>>16)>>16)>>8)) 183 #define FX_GETBYTEOFFSET48(a) ((FX_BYTE)(((a>>16)>>16)>>16)) 184 #define FX_GETBYTEOFFSET56(a) ((FX_BYTE)((((a>>16)>>16)>>16)>>8)) 186 #define FX_GETBYTEOFFSET32(a) 0 187 #define FX_GETBYTEOFFSET40(a) 0 188 #define FX_GETBYTEOFFSET48(a) 0 189 #define FX_GETBYTEOFFSET56(a) 0 193 #include <sys/stat.h> 199 #define O_LARGEFILE 0 203 #if defined(_FX_LARGEFILE_SUPPORT_) 204 #if _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_LINUX_EMBEDDED_ || _FX_OS_ == _FX_ANDROID_ 207 #ifndef _CHROME_PNACL_ 208 #define _FX_USE_OFF64_T_ 212 #if defined(_FX_USE_OFF64_T_) 213 #define FX_FILESIZE off64_t 214 #elif _FX_OS_ == _FX_LINUX_EMBEDDED_ 215 #define FX_FILESIZE FX_INT32 217 #ifndef _CHROME_PNACL_ 218 #define FX_FILESIZE off_t 220 #define FX_FILESIZE FX_INT32 225 #define FX_FILESIZE FX_INT32 226 #define FX_GETBYTEOFFSET32(a) 0 227 #define FX_GETBYTEOFFSET40(a) 0 228 #define FX_GETBYTEOFFSET48(a) 0 229 #define FX_GETBYTEOFFSET56(a) 0 233 #define FX_GETBYTEOFFSET24(a) ((FX_BYTE)(a>>24)) 234 #define FX_GETBYTEOFFSET16(a) ((FX_BYTE)(a>>16)) 235 #define FX_GETBYTEOFFSET8(a) ((FX_BYTE)(a>>8)) 236 #define FX_GETBYTEOFFSET0(a) ((FX_BYTE)(a)) 243 #define FX_FILEMODE_Write 0 245 #define FX_FILEMODE_ReadOnly 1 247 #define FX_FILEMODE_Truncate 2 // 317 size_t FX_File_Read(FX_HFILE hFile,
void* pBuffer,
size_t szBuffer);
338 size_t FX_File_Write(FX_HFILE hFile,
const void* pBuffer,
size_t szBuffer);
463 #if !defined(__EMSCRIPTEN__) && !defined(SWIGJAVA) 508 #if !defined(__EMSCRIPTEN__) && !defined(SWIGJAVA) 571 virtual size_t ReadBlock(
void* buffer,
size_t size) = 0;
648 virtual size_t ReadBlock(
void* buffer,
size_t size) {
return 0;}
659 #if !defined(__EMSCRIPTEN__) && !defined(SWIGJAVA) 746 virtual size_t ReadBlock(
void* buffer,
size_t size) = 0;
775 #if !defined(__EMSCRIPTEN__) && !defined(SWIGJAVA) 857 virtual size_t ReadBlock(
void* buffer,
size_t size) = 0;
899 friend class CFX_ChunkFileStreamsManager;
906 class CFX_ChunkFileStreamsManagerImpl;
907 class CFX_ChunkFileStreamsManager :
public CFX_Object
917 CFX_ChunkFileStreamsManager(
IFX_FileStream* pFileStream,
size_t nChunkSize = 1024);
923 ~CFX_ChunkFileStreamsManager();
933 std::shared_ptr<CFX_ChunkFileStreamsManagerImpl> m_pImpl;
989 class IFX_FileCollection
992 virtual void Release() = 0;
998 virtual ~IFX_FileCollection() {}
1030 virtual void EstimateSize(
size_t nInitSize,
size_t nGrowSize) = 0;
1132 virtual size_t ReadBlock(
void* buffer,
size_t size) = 0;
1170 #define FX_FILECACHE_CHUNKSIZE 32768 1171 #define FX_FILECACHE_CHUNKCOUNT 64 1250 virtual size_t ReadBlock(
void* buffer,
size_t size);
1253 FXMT_LOCKOBJECT_DEFINE(m_LockObj);
1269 #endif // _FX_STREAM_H_ virtual void GetPath(CFX_WideString &wsPath)=0
获取当前路径字符串。
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从文件中读取数据块。
virtual FX_INT64 GetSize()
获取文件的总大小
void * FX_LPVOID
指向任意类型的指针。
Definition: fx_system.h:654
内存流接口。
Definition: fx_stream.h:1006
virtual size_t ReadBlock(void *buffer, size_t size)
从流中读取数据块。
Definition: fx_stream.h:648
wchar_t FX_WCHAR
编译器相关的Unicode字符(Microsoft编译器为16位,gcc为32位)。
Definition: fx_system.h:732
virtual void Release()=0
释放所有资源时调用
IFX_FileAccess * FX_CreateDefaultFileAccess(FX_WSTR wsPath, IFX_Allocator *pAllocator=0)
创建基于CRT的文件I/O接口。
文件写入接口。
Definition: fx_stream.h:470
unsigned long FX_DWORD
32位无符号整数。
Definition: fx_system.h:726
FX_BOOL AttachFile(IFX_FileRead *pFile, FX_BOOL bTakeOver)
附加文件读取。
virtual void Release()=0
销毁当前实例。
常量宽字符串类
Definition: fx_string.h:1210
virtual FX_BOOL WriteBlock(const void *pData, FX_INT64 offset, size_t size)=0
写入数据块。
virtual FX_BOOL SetRange(FX_INT64 offset, FX_INT64 size)
设置访问范围。
Definition: fx_stream.h:623
FX_BOOL FX_File_Exist(FX_BSTR fileName)
确定文件是否存在。
void FX_File_Close(FX_HFILE hFile, IFX_Allocator *pAllocator=0)
关闭文件。
virtual FX_INT64 SetPosition(FX_INT64 pos)
设置当前文件访问位置。
Definition: fx_stream.h:580
FX_BOOL FX_File_Copy(FX_BSTR fileNameSrc, FX_BSTR fileNameDst)
复制文件。
virtual void Release()=0
销毁当前实例。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
基于分块的文件流接口,用于读取和写入。
Definition: fx_stream.h:810
virtual FX_LPBYTE GetBuffer() const =0
获取当前内存缓冲区。
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)=0
将数据块写入流中。
FX_BOOL FX_DeleteFolder(FX_LPCSTR path)
删除文件夹。
void FX_CloseFolder(void *handle)
关闭文件夹句柄。
virtual FX_LPCBYTE GetBlockBuffer()=0
获取块数据的内部缓冲区。
FX_WCHAR FX_GetFolderSeparator()
获取系统的文件夹分隔符。很可能是 '/' 或 '\'。
virtual size_t ReadBlock(void *buffer, size_t size)=0
从顺序流中读取数据块。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
virtual FX_INT64 GetPosition()
获取流中当前的读取位置。
Definition: fx_stream.h:614
wchar_t const * FX_LPCWSTR
指向常量Unicode字符的指针。
Definition: fx_system.h:736
virtual void Release()=0
释放所有资源时调用
virtual FX_INT64 SetPosition(FX_INT64 pos)
设置当前文件访问位置。
Definition: fx_stream.h:657
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从流中读取数据块。
size_t FX_File_WritePos(FX_HFILE hFile, const void *pBuffer, size_t szBuffer, FX_INT64 pos)
在指定位置写入数据。
FX_BOOL FX_GetNextFile(void *handle, CFX_ByteString &filename, FX_BOOL &bFolder, FX_LPCSTR absPath=0)
读取文件夹中的下一个条目。
FX_HFILE FX_File_Open(FX_BSTR fileName, FX_DWORD dwMode, IFX_Allocator *pAllocator=0)
以指定的访问模式打开文件。
FX_BOOL Init(FX_INT32 nChunkSize, FX_INT32 nChunkCount, FX_LPVOID pBuffer, IFX_Allocator *pAllocator=0)
初始化分块大小和分块数量。
缓存文件读取接口。
Definition: fx_stream.h:1174
virtual void Release()=0
释放所有资源时调用
文件读取接口。
Definition: fx_stream.h:587
宽字符串类
Definition: fx_string.h:1457
流写入接口。
Definition: fx_stream.h:441
void * FX_POSITION
用于表示集合中元素位置的值。
Definition: fx_system.h:658
size_t FX_File_Read(FX_HFILE hFile, void *pBuffer, size_t szBuffer)
从当前文件访问位置读取数据。
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
virtual FX_INT64 GetPosition()
获取流中当前的读取位置。
virtual FX_BOOL WriteBlock(const void *buffer, size_t size)
将数据块写入当前流的末尾。
Definition: fx_stream.h:766
流读取接口。
Definition: fx_stream.h:541
virtual FX_BOOL IsEOF()
确定是否到达流的末尾。
Definition: fx_stream.h:608
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
size_t FX_File_Write(FX_HFILE hFile, const void *pBuffer, size_t szBuffer)
从当前文件访问位置写入数据。
virtual FX_BOOL Flush()=0
刷新文件的内部缓冲区
IFX_BufferRead流提供了读取流数据的优化方法。 通常,一个流维护用于数据访问的内部缓冲区,此缓冲区可以直接提供给调用者, 从而避免数据复制。
Definition: fx_stream.h:1101
virtual FX_BOOL Flush()=0
刷新内部缓冲区。
int FX_INT32
32位有符号整数。
Definition: fx_system.h:683
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
IFX_FileWrite * FX_CreateFileWrite(FX_LPCSTR filename, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问(fopen,...)的平台)创建基于CRT的文件写入接口。
size_t FX_File_ReadPos(FX_HFILE hFile, void *pBuffer, size_t szBuffer, FX_INT64 pos)
从指定位置读取数据。
virtual IFX_FileStream * Retain()=0
创建共享实例。
virtual FX_INT64 GetBlockOffset()=0
获取内部缓冲区中数据的偏移量。
virtual size_t GetBlockSize()=0
获取内部缓冲区中数据的大小。
int FX_BOOL
布尔变量(应为TRUE或FALSE)。
Definition: fx_system.h:691
文件访问接口,用于打开文件。
Definition: fx_stream.h:940
FX_BOOL FX_CreateFolder(FX_LPCSTR path)
创建新文件夹。
void * FX_OpenFolder(FX_LPCSTR path)
打开文件夹进行读取。
virtual void Release()
销毁当前实例。
virtual FX_BOOL Flush()
刷新流数据。
Definition: fx_stream.h:461
char const * FX_LPCSTR
指向常量8位Windows (ANSI) 字符的指针。
Definition: fx_system.h:705
virtual FX_BOOL Flush()
刷新内部缓冲区。读取模式不支持,直接返回false。
Definition: fx_stream.h:1264
FX_BOOL FX_IsFilePathExist(FX_LPCWSTR path)
检查路径是否存在,包括文件路径和文件夹路径。
virtual FX_BOOL ReadNextBlock(FX_BOOL bRestart=false)=0
读取顺序流中的下一个块。
文件流接口,用于读取和写入。
Definition: fx_stream.h:692
CFX_CachedFileRead()
构造函数。
virtual IFX_FileAccess * Retain()=0
创建共享实例。
virtual FX_BOOL IsEOF()
确定是否到达流的末尾。
virtual FX_BOOL WriteBlock(const void *pData, size_t size)
将数据块写入到末尾。
Definition: fx_stream.h:506
virtual IFX_FileStream * Retain()
创建共享实例。
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)
将数据块写入流中。读取模式不支持,直接返回false。
Definition: fx_stream.h:1262
FX_BOOL FX_File_Move(FX_BSTR fileNameSrc, FX_BSTR fileNameDst)
移动文件。
unsigned char * FX_LPBYTE
指向FX_BYTE的指针。
Definition: fx_system.h:667
virtual FX_INT64 GetSize()=0
获取文件的总大小。
FX_BOOL FX_File_Delete(FX_BSTR fileName)
删除文件。
FX_INT64 FX_File_GetPosition(FX_HFILE hFile)
获取当前文件访问位置。
Foxit分配器接口。
Definition: fx_memory.h:994
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)=0
将数据块写入流中。
FX_BOOL FX_File_Flush(FX_HFILE hFile)
如果需要则刷新内部缓冲区。
virtual void ClearRange()
清除由函数 IFX_FileRead::SetRange 设置的访问范围。
Definition: fx_stream.h:629
#define FXSYS_assert
断言。
Definition: fx_system.h:804
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
FX_INT64 FX_File_GetSize(FX_HFILE hFile)
获取文件大小。
virtual size_t ReadBlock(void *buffer, size_t size)=0
从顺序流中读取数据块。
virtual FX_INT64 GetSize()=0
获取文件的总大小
virtual FX_BOOL Flush()=0
刷新内部缓冲区。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
virtual void DetachBuffer()=0
分离当前内存缓冲区。
virtual FX_INT64 GetSize()=0
获取当前流的大小,以字节为单位。
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从流中读取数据块。
常量字节字符串类
Definition: fx_string.h:51
virtual void Release()=0
释放所有资源时调用。
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
FX_BOOL FX_File_Truncate(FX_HFILE hFile, FX_INT64 szFile)
截断文件大小。
virtual FX_BOOL WriteBlock(const void *pData, size_t size)=0
写入数据块。
FX_BOOL PreCache(FX_INT64 offset, FX_INT32 nCacheCount)
预缓存。
字节字符串类
Definition: fx_string.h:317
virtual FX_INT64 GetSize()=0
获取当前流的大小,以字节为单位。
IFX_FileRead * FX_CreateFileRead(FX_LPCSTR filename, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问的平台)创建基于CRT的文件读取接口。
unsigned char const * FX_LPCBYTE
指向常量FX_BYTE的指针。
Definition: fx_system.h:669
IFX_FileStream * FX_CreateFileStream(FX_LPCSTR filename, FX_DWORD dwModes, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问的平台)创建基于CRT的文件I/O接口。
virtual FX_BOOL WriteBlock(const void *buffer, size_t size)
将数据块写入当前流的末尾。
Definition: fx_stream.h:877
virtual void AttachBuffer(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver=false)=0
附加内存缓冲区。
virtual IFX_FileStream * Retain()=0
创建共享实例。
#define NULL
空指针值。
Definition: fx_system.h:792
#define FX_DEFINEHANDLE(name)
定义句柄类型的宏。
Definition: fx_system.h:772
#define FX_FILESIZE
直接支持大文件。
Definition: fx_stream.h:155
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)
从文件中读取数据块
virtual IFX_FileStream * CreateFileStream(FX_DWORD dwModes)=0
创建IFX_FileStream来操作文件。
virtual FX_BOOL IsConsecutive() const =0
确定当前模式是否为连续模式。
virtual void EstimateSize(size_t nInitSize, size_t nGrowSize)=0
更改初始大小和增长大小。
virtual void Release()=0
销毁当前实例。
virtual void Release()=0
当要释放当前实例时调用。
FX_INT64 FX_File_SetPosition(FX_HFILE hFile, FX_INT64 pos)
设置当前文件访问位置。
IFX_MemoryStream * FX_CreateMemoryStream(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver=false, IFX_Allocator *pAllocator=0)
通过给定的内存缓冲区创建流对象。此函数创建连续内存流对象。
virtual ~CFX_CachedFileRead()
析构函数。