ifstream java_使用ifstream :: seekg和tellg获取文件大小

ifstream java_使用ifstream :: seekg和tellg获取文件大小当我尝试获取文件大小时,我有以下块来测试seekg和tellg的行为:intsize=0;ifstreamin(fileName.c_str(),ifstream::in|ifstream::binary);if(in){in.seekg(0,ifstream::end);size=in.tellg();cout<<endl;cout<<endl;…

大家好,又见面了,我是你们的朋友全栈君。

当我尝试获取文件大小时,我有以下块来测试seekg和tellg的行为:

int size = 0;

ifstream in(fileName.c_str(), ifstream::in | ifstream::binary);

if(in)

{

in.seekg(0,ifstream::end);

size = in.tellg();

cout << endl;

cout << endl;

cout << “********** size stream1*** =” << size << endl;

in.seekg(0,ios::end);

size = in.tellg();

cout << “********** size stream2*** =” << size << endl;

in.seekg(0,ios::end);

size = in.tellg();

cout << “********** size stream3*** =” << size << endl;

in.seekg(100,ios::end);

size = in.tellg();

cout << “********** size stream4*** =” << size << endl;

in.seekg(0,ios::beg);

size = in.tellg();

cout << “********** size stream5*** =” << size << endl;

in.seekg(100);

in.seekg(0, ios::end);

size = in.tellg();

cout << “********** size stream6*** =” << size << endl;

in.seekg(100);

in.seekg(0, ios::cur);

size = in.tellg();

cout << “********** size stream7*** =” << size << endl;

in.seekg(-100,ios::end);

size = in.tellg();

cout << “********** size stream8*** =” << size << endl;

in.seekg(ios::beg,ios::end);

size = in.tellg();

cout << “********** size stream9*** =” << size << endl;

in.seekg(ios::beg);

in.seekg(ios::end);

size = in.tellg();

cout << “********** size stream10*** =” << size << endl;

cout << endl;

cout << endl;

}

其结果如下:

********** size stream1*** =1846

********** size stream2*** =1846

********** size stream3*** =1846

********** size stream4*** =1946

********** size stream5*** =0

********** size stream6*** =1846

********** size stream7*** =100

********** size stream8*** =1746

********** size stream9*** =1846

********** size stream10*** =2

我的问题如下:

tellg 会返回最后 seekg 找到的字节吗?

为什么 stream5 结果为0?它以前的位置是在文件的末尾 .

seekg 将始终从文件的开头开始,如 stream5 所示?

seekg 无法向后退,如 stream5 所示?

seekg的第一个参数究竟是什么意思?它表示它是第二个参数的偏移量 . 如果它是一个正值,它似乎超出了第二个参数指向的位置,如 stream4 所示 .

如果我想知道前100个字节后的大小,我必须使用-100,如 stream8 所示?

为什么 stream10 是2?

ofstream中

seekp 和 tellp 的属性为 seekg 和 tellg ?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145945.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android面试题:Retrofit「建议收藏」

    目录源码:相关视频:相关文章:一、简介:二、Retrofit常用参数注解:三、Retrofit使用:源码:square/retrofit相关视频:Retrofit网络库相关文章:Android优雅的让RxJava2.0+Retrofit2.0结合使用手写Rxjava+Retrofit+Mvp这是一份很详细的Retrofit2.0使用教…

    2022年4月13日
    37
  • 数据结构与算法(十五):二叉排序树[通俗易懂]

    数据结构与算法(十五):二叉排序树[通俗易懂]一、什么是二叉排序树二叉排序树(BinarySortTree)又称二叉查找树、二叉搜索树。它或者是一棵空树;或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根

    2022年8月16日
    5
  • MySQL递归查询 三种实现方式

    MySQL递归查询 三种实现方式我是以山东济南的行政区划作为示例的,数据库是MySQL话不多说,直接上示例代码!感觉阅读麻烦的伙伴可以直接下载资源:点我下载1.建表脚本1.1.建表DROPTABLEIFEXISTS`sys_region`;CREATETABLE`sys_region`(`id`int(50)NOTNULLAUTO_INCREMENTCOMMENT’地区主键编号’,`name`varchar(50)CHARACTERSETutf8COLLATEut

    2022年7月15日
    41
  • vm安装ubuntu时一直没反应_虚拟机安装ubuntu系统要多久

    vm安装ubuntu时一直没反应_虚拟机安装ubuntu系统要多久这**加粗样式**里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学

    2022年9月30日
    2
  • 淘宝店铺优化_手机淘宝怎么分享链接

    淘宝店铺优化_手机淘宝怎么分享链接前言为了满足不同用户的多样性购物需求,过去两年里手机淘宝的业务不断膨胀,已经从单一的购物工具成为了购物内容平台。在业务快速增长的同时,也带来一些副作用,很多操作环节和页面因为承载功能太多,展示速度变慢

    2022年8月3日
    6
  • pip和pip3的区别_linux将文件改为只读

    pip和pip3的区别_linux将文件改为只读前言装完python3后发现库里面既有pip也有pip3,不知道它们的区别,因此特意去了解了一下。解释先搜索了一下看到了如下的解释,安装了python3之后,库里面既会有pip3也会有pip1.

    2022年8月6日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号