有没有办法通过程序在特定时间获取文件部分加载内容的大小C++
Is there any way to get the size of the partially loaded content of a file at a particular time through C++ program?
我没有打开文件流中的文件。有一个 "浏览"按钮 ,单击该按钮后,它为您提供了选择文件的选项,就像所有其他浏览按钮一样。然后该文件将在已经定义为打开该类型的文件中打开。例如,pdf文件将在Adobe中打开,.txt将在记事本(或记事本++或任何其他设置为打开.txt文件的文本编辑器)中打开。我想获取该文件在特定时间加载了多少内容。有没有办法获取该文件部分加载内容的大小?
我将做出以下假设:
- 您的"预定义应用程序"实际上是一个不受您控制的库,但正在为您读取文件
- 您想知道文件的读取指针前进了多远
- 您可以访问表示"预定义应用程序"正在使用的文件(
FILE *
或ifstream
、POSIX 文件描述符或 Windows 文件HANDLE
)的基础对象
如果使用fopen
打开文件进行读取,则将在FILE *
上使用ftell
。
FILE *infile;
//...
long position = ftell(infile);
如果您有ifstream
,请使用 tellg
方法。
std::ifstream infile;
//...
long position = infile.tellg();
如果打开文件以供使用 open
读取,则可以在文件描述符上使用 lseek
。
int infile;
//...
long position = lseek(infile, 0, SEEK_CUR);
如果在 Windows 上使用 OpenFile
打开文件以供读取,您将在 HANDLE
上使用 SetFilePointer
。
HANDLE infile;
//...
long position = SetFilePointer(infile, 0, 0, FILE_CURRENT);
如果您使用的是C++流,则可以使用 tellg
函数获取文件中的位置。
请注意,这将返回相对于流字符大小的位置。例如,读取 istream
的 10 个字符(使用 char
),然后tellg
将报告十个字符,但从wistream
(使用 wchar_t
)中读取 10 个字符,则报告的数量将是 20 或 40,具体取决于 wchar_t
的大小。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- 是否有原子加载非原子值的函数?
- 将 bmp 文件加载到 TSpeedButton 中
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常