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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • KAFKA删除topic步骤[通俗易懂]

    KAFKA删除topic步骤[通俗易懂]以下删除kafka主题的方法在Windows环境下测试通过

    2022年10月17日
  • vim查看空格回车符号_linux vi 替换字符串

    vim查看空格回车符号_linux vi 替换字符串参考链接https://blog.csdn.net/qq_30038111/article/details/83447045答案就是需要转义

    2022年9月16日
  • Tomcat学习—Tomcat的端口修改和编码方式修改

    在学习使用Tomcat的时候,了解一下Tomcat的默认端口修改和默认编码方式修改,方便以后更深入的学习。

    2022年2月24日
  • 检查网站有没有被挂马_网站在线挂马检测工具

    检查网站有没有被挂马_网站在线挂马检测工具首先,我们来看看网站被挂马的危害性。网站被挂马后,一方面是系统资源,流量带宽资源的巨大损失,另一方面也成为了传播网页木马的“傀儡帮凶”,严重影响到网站的公众信誉度。很多网页木马都是利益驱动,偷盗各类帐号密码,如电子银行帐户和密码、游戏帐号和密码、邮箱帐户和密码、qq/MSN帐号和密码等;另外,使得客户端被安装恶意插件,强迫浏览黑客指定的网站,或者被利用攻击某个站点等。  我们知道了网站被挂马

    2022年9月27日
  • 阿里ECS云服务器买来之后必做的几个操作

    阿里ECS云服务器买来之后必做的几个操作今天我为大家带来的是如何在云服务器中配置自己的环境。在这里先说明一下我的配置,我使用的是阿里云服务器ECS+Ubuntu20.0464位来实现的,不同的服务器和不同的系统版本可能会导致操作有些许不同,如果你是华为云或者腾讯云又或者是百度云的用户,还请自己多多摸索,大致的思路是一样的。废话不多说,我们现在就开始来着手实现吧——此处我们是假设你已经购买好阿里云ECS云服务器哦!1.检查你的安全组首先,我们要做的是打开你的安全组,检查你的22端口是否被开启,只有当端口

    2022年5月4日
  • 两地三中心是什么意思「建议收藏」

    两地三中心是什么意思「建议收藏」两地三中心随着IT应用的快速发展,金融,银行,政府等越来越多的用户要求核心业务7*24不断网,不断电持续运行,进而出现了两地三中心的方案,是一些大型企业因为大自然的灾害而在同城选择两个机房异地选择一个机房而组成的称两地三中心,这样的方案具备高可用和灾难备份能力。同城双机房指的是在同一个城市或相邻的城市建立两个相同的系统,双中心具备等同的业务处理能力并通过高速链路实时数据同步,日常情况下可同时分…

    2022年6月16日

发表回复

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

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