浏览该文件的文档.
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_
FX_BOOL FX_File_Truncate(FX_HFILE hFile, FX_INT64 szFile)
截断文件大小。
virtual FX_BOOL WriteBlock(const void *pData, size_t size)
将数据块写入到末尾。
Definition: fx_stream.h:506
unsigned long FX_DWORD
32位无符号整数。
Definition: fx_system.h:726
文件写入接口。
Definition: fx_stream.h:470
virtual ~CFX_CachedFileRead()
析构函数。
基于分块的文件流接口,用于读取和写入。
Definition: fx_stream.h:810
virtual void Release()=0
当要释放当前实例时调用。
virtual IFX_FileStream * Retain()
创建共享实例。
virtual void AttachBuffer(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver=false)=0
附加内存缓冲区。
FX_BOOL AttachFile(IFX_FileRead *pFile, FX_BOOL bTakeOver)
附加文件读取。
IFX_FileAccess * FX_CreateDefaultFileAccess(FX_WSTR wsPath, IFX_Allocator *pAllocator=0)
创建基于CRT的文件I/O接口。
wchar_t FX_WCHAR
编译器相关的Unicode字符(Microsoft编译器为16位,gcc为32位)。
Definition: fx_system.h:732
virtual FX_BOOL WriteBlock(const void *pData, size_t size)=0
写入数据块。
size_t FX_File_Read(FX_HFILE hFile, void *pBuffer, size_t szBuffer)
从当前文件访问位置读取数据。
virtual void Release()=0
释放所有资源时调用
size_t FX_File_WritePos(FX_HFILE hFile, const void *pBuffer, size_t szBuffer, FX_INT64 pos)
在指定位置写入数据。
流读取接口。
Definition: fx_stream.h:541
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从流中读取数据块。
FX_BOOL FX_CreateFolder(FX_LPCSTR path)
创建新文件夹。
文件流接口,用于读取和写入。
Definition: fx_stream.h:692
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
virtual IFX_FileAccess * Retain()=0
创建共享实例。
virtual FX_BOOL IsEOF()
确定是否到达流的末尾。
Definition: fx_stream.h:608
FX_BOOL FX_DeleteFolder(FX_LPCSTR path)
删除文件夹。
IFX_FileWrite * FX_CreateFileWrite(FX_LPCSTR filename, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问(fopen,...)的平台)创建基于CRT的文件写入接口。
FX_BOOL FX_File_Copy(FX_BSTR fileNameSrc, FX_BSTR fileNameDst)
复制文件。
文件读取接口。
Definition: fx_stream.h:587
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)=0
将数据块写入流中。
FX_INT64 FX_File_SetPosition(FX_HFILE hFile, FX_INT64 pos)
设置当前文件访问位置。
FX_INT64 FX_File_GetPosition(FX_HFILE hFile)
获取当前文件访问位置。
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
size_t FX_File_Write(FX_HFILE hFile, const void *pBuffer, size_t szBuffer)
从当前文件访问位置写入数据。
IFX_BufferRead流提供了读取流数据的优化方法。 通常,一个流维护用于数据访问的内部缓冲区,此缓冲区可以直接提供给调用者, 从而避免数据复制。
Definition: fx_stream.h:1101
virtual void Release()=0
销毁当前实例。
IFX_FileRead * FX_CreateFileRead(FX_LPCSTR filename, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问的平台)创建基于CRT的文件读取接口。
virtual size_t GetBlockSize()=0
获取内部缓冲区中数据的大小。
virtual FX_INT64 SetPosition(FX_INT64 pos)
设置当前文件访问位置。
Definition: fx_stream.h:580
virtual size_t ReadBlock(void *buffer, size_t size)=0
从顺序流中读取数据块。
virtual FX_INT64 GetSize()=0
获取当前流的大小,以字节为单位。
流写入接口。
Definition: fx_stream.h:441
void * FX_LPVOID
指向任意类型的指针。
Definition: fx_system.h:654
virtual void GetPath(CFX_WideString &wsPath)=0
获取当前路径字符串。
#define FX_DEFINEHANDLE(name)
定义句柄类型的宏。
Definition: fx_system.h:772
virtual void DetachBuffer()=0
分离当前内存缓冲区。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
void * FX_OpenFolder(FX_LPCSTR path)
打开文件夹进行读取。
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)
从文件中读取数据块
virtual void Release()
销毁当前实例。
void * FX_POSITION
用于表示集合中元素位置的值。
Definition: fx_system.h:658
virtual FX_INT64 GetPosition()
获取流中当前的读取位置。
int FX_INT32
32位有符号整数。
Definition: fx_system.h:683
virtual FX_BOOL IsConsecutive() const =0
确定当前模式是否为连续模式。
virtual FX_INT64 GetSize()=0
获取当前流的大小,以字节为单位。
FX_BOOL FX_File_Exist(FX_BSTR fileName)
确定文件是否存在。
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从文件中读取数据块。
virtual void EstimateSize(size_t nInitSize, size_t nGrowSize)=0
更改初始大小和增长大小。
字节字符串类
Definition: fx_string.h:317
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)
将数据块写入流中。读取模式不支持,直接返回false。
Definition: fx_stream.h:1262
Foxit分配器接口。
Definition: fx_memory.h:994
virtual FX_BOOL Flush()
刷新流数据。
Definition: fx_stream.h:461
virtual void Release()=0
销毁当前实例。
virtual FX_INT64 GetBlockOffset()=0
获取内部缓冲区中数据的偏移量。
wchar_t const * FX_LPCWSTR
指向常量Unicode字符的指针。
Definition: fx_system.h:736
缓存文件读取接口。
Definition: fx_stream.h:1174
virtual FX_INT64 GetSize()=0
获取文件的总大小
virtual FX_BOOL Flush()=0
刷新文件的内部缓冲区
#define FXSYS_assert
断言。
Definition: fx_system.h:804
FX_BOOL FX_File_Move(FX_BSTR fileNameSrc, FX_BSTR fileNameDst)
移动文件。
virtual FX_BOOL Flush()
刷新内部缓冲区。读取模式不支持,直接返回false。
Definition: fx_stream.h:1264
virtual FX_BOOL WriteBlock(const void *buffer, size_t size)
将数据块写入当前流的末尾。
Definition: fx_stream.h:766
virtual FX_LPBYTE GetBuffer() const =0
获取当前内存缓冲区。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
char const * FX_LPCSTR
指向常量8位Windows (ANSI) 字符的指针。
Definition: fx_system.h:705
virtual FX_INT64 SetPosition(FX_INT64 pos)
设置当前文件访问位置。
Definition: fx_stream.h:657
#define FX_FILESIZE
直接支持大文件。
Definition: fx_stream.h:155
unsigned char const * FX_LPCBYTE
指向常量FX_BYTE的指针。
Definition: fx_system.h:669
virtual IFX_FileStream * Retain()=0
创建共享实例。
virtual size_t ReadBlock(void *buffer, size_t size)=0
从顺序流中读取数据块。
virtual FX_LPCBYTE GetBlockBuffer()=0
获取块数据的内部缓冲区。
virtual IFX_FileStream * CreateFileStream(FX_DWORD dwModes)=0
创建IFX_FileStream来操作文件。
内存流接口。
Definition: fx_stream.h:1006
virtual void ClearRange()
清除由函数 IFX_FileRead::SetRange 设置的访问范围。
Definition: fx_stream.h:629
FX_BOOL PreCache(FX_INT64 offset, FX_INT32 nCacheCount)
预缓存。
virtual FX_BOOL ReadNextBlock(FX_BOOL bRestart=false)=0
读取顺序流中的下一个块。
const typedef CFX_ByteStringC & FX_BSTR
常量CFX_ByteStringC对象的引用。
Definition: fx_string.h:285
FX_INT64 FX_File_GetSize(FX_HFILE hFile)
获取文件大小。
FX_HFILE FX_File_Open(FX_BSTR fileName, FX_DWORD dwMode, IFX_Allocator *pAllocator=0)
以指定的访问模式打开文件。
FX_BOOL FX_IsFilePathExist(FX_LPCWSTR path)
检查路径是否存在,包括文件路径和文件夹路径。
文件访问接口,用于打开文件。
Definition: fx_stream.h:940
FX_BOOL Init(FX_INT32 nChunkSize, FX_INT32 nChunkCount, FX_LPVOID pBuffer, IFX_Allocator *pAllocator=0)
初始化分块大小和分块数量。
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
virtual FX_BOOL ReadBlock(void *buffer, FX_INT64 offset, size_t size)=0
从流中读取数据块。
#define NULL
空指针值。
Definition: fx_system.h:792
size_t FX_File_ReadPos(FX_HFILE hFile, void *pBuffer, size_t szBuffer, FX_INT64 pos)
从指定位置读取数据。
virtual FX_BOOL IsEOF()=0
确定是否到达流的末尾。
virtual FX_BOOL WriteBlock(const void *pData, FX_INT64 offset, size_t size)=0
写入数据块。
int FX_BOOL
布尔变量(应为TRUE或FALSE)。
Definition: fx_system.h:691
const typedef CFX_WideStringC & FX_WSTR
常量CFX_WideStringC对象的引用的类型定义。
Definition: fx_string.h:1422
IFX_FileStream * FX_CreateFileStream(FX_LPCSTR filename, FX_DWORD dwModes, IFX_Allocator *pAllocator=0)
(仅适用于支持CRT文件访问的平台)创建基于CRT的文件I/O接口。
void FX_File_Close(FX_HFILE hFile, IFX_Allocator *pAllocator=0)
关闭文件。
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
virtual FX_BOOL WriteBlock(const void *buffer, size_t size)
将数据块写入当前流的末尾。
Definition: fx_stream.h:877
virtual FX_BOOL Flush()=0
刷新内部缓冲区。
virtual FX_INT64 GetSize()=0
获取文件的总大小。
void FX_CloseFolder(void *handle)
关闭文件夹句柄。
virtual FX_BOOL SetRange(FX_INT64 offset, FX_INT64 size)
设置访问范围。
Definition: fx_stream.h:623
unsigned char * FX_LPBYTE
指向FX_BYTE的指针。
Definition: fx_system.h:667
FX_WCHAR FX_GetFolderSeparator()
获取系统的文件夹分隔符。很可能是 '/' 或 '\'。
FX_BOOL FX_File_Delete(FX_BSTR fileName)
删除文件。
virtual FX_BOOL Flush()=0
刷新内部缓冲区。
virtual FX_INT64 GetPosition()
获取流中当前的读取位置。
Definition: fx_stream.h:614
CFX_CachedFileRead()
构造函数。
virtual void Release()=0
释放所有资源时调用。
virtual FX_BOOL IsEOF()
确定是否到达流的末尾。
宽字符串类
Definition: fx_string.h:1457
virtual FX_INT64 GetPosition()=0
获取流中当前的读取位置。
virtual void Release()=0
释放所有资源时调用
IFX_MemoryStream * FX_CreateMemoryStream(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver=false, IFX_Allocator *pAllocator=0)
通过给定的内存缓冲区创建流对象。此函数创建连续内存流对象。
virtual FX_INT64 GetSize()
获取文件的总大小
virtual FX_BOOL WriteBlock(const void *buffer, FX_INT64 offset, size_t size)=0
将数据块写入流中。
virtual IFX_FileStream * Retain()=0
创建共享实例。
FX_BOOL FX_File_Flush(FX_HFILE hFile)
如果需要则刷新内部缓冲区。
virtual void Release()=0
释放所有资源时调用
virtual void Release()=0
销毁当前实例。
FX_BOOL FX_GetNextFile(void *handle, CFX_ByteString &filename, FX_BOOL &bFolder, FX_LPCSTR absPath=0)
读取文件夹中的下一个条目。
virtual size_t ReadBlock(void *buffer, size_t size)
从流中读取数据块。
Definition: fx_stream.h:648
@2026 Foxit Software Incorporated. All rights reserved.