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 ?

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm的字体设置_香港3开头的固定号码是什么

    pycharm的字体设置_香港3开头的固定号码是什么具体设置路径:File->settings->Editor->FileandCodeTemplates->PythonScript

  • linux 重启nginx 服务[通俗易懂]

    linux 重启nginx 服务[通俗易懂]第一步:进入nginx安装目录默认安装目录为/usr/local/nginx/sbin/nginx这里我的安装路径为/app/nwom/Inspur/apps/tools-nginx第二步:查看进程ps-ef|grepnginx第三步:杀掉原进程从主进程开始(上图圈红的为主进程)kill-92386kill-9238723882389239023912392239323942395239623972398第四步:启动进程启动方式1:./ngin

  • 玩转c语言——c语言小游戏 迷宫小游戏(附源码)

    玩转c语言——c语言小游戏 迷宫小游戏(附源码)第一步要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>//小游戏所需的所有头文件intmain(){chara[100][100]={“######”, “#o#”, “####”, “###”, “##…

  • Android开发之AOP编程

    Android开发之AOP编程

  • 日志审计系统如何和服务器互联,服务器如何查看审计日志[通俗易懂]

    日志审计系统如何和服务器互联,服务器如何查看审计日志[通俗易懂]服务器如何查看审计日志内容精选换一换云审计CTS与LTS进行系统对接后,系统自动在云日志服务控制台创建的日志组和日志流,如果需要将CTS的日志转储至OBS中,您需要进行以下操作:在云审计服务管理控制台,单击左侧导航栏中的“追踪器”。单击追踪器“system”右侧的“配置”。在“配置追踪器”页面,开启“事件分析”。在云日志服务管理控制台,选择左侧导航栏中的“日志转储”,单击“如果变更规格失败,请到…

  • 添加打印机时错误为0x0000011b_连接打印机0x000003e3

    添加打印机时错误为0x0000011b_连接打印机0x000003e3问题描述前几天共享打印机还可以使用的突然就不能打印了,删除重新安装时就提示windows无法连接到打印机,如下图:解决方案这是的补丁代号为KB5005569/KB5005573/KB5005568/KB5005566/KB5005565造成的。卸掉上述补丁即可解决问题步骤找到设置——>更新和安全—->Windows更新—->“查看更新历史记录—->卸载更新本人的经验分享,希望可以帮助到你们,如何不对的地方,可以评论留言,帮我指正一下,如果帮助了你

发表回复

您的电子邮箱地址不会被公开。

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