seekg如何找到文件的结尾?

时间:2013-02-10 00:10:05

标签: c++ fstream seekg

在使用seekg& amp;告诉我一个文件,我想知道引擎盖下发生了什么?

    // Open file and get file size
    int myFileSize;
    std::fstream myFile;
    myFile.open(myFileName, std::ios::in|std::ios::binary);
    if (myFile.is_open())
    {
        myFile.seekg(0, std::ios::end);
        myFileSize = myFile.tellg();
        myFile.seekg(0, std::ios::beg);
        myFile.close();
    }

Q1::seekg实际上是在遍历文件的全部内容,直到找到一些特殊的" EOF字符"?或者它是否使用文件系统提供的其他信息来了解"知道"文件末尾的位置是什么?

Q2: seekg是一个寻线操作。这是否意味着文件的整个内容必须通过流?

请原谅我,如果我对这一切的运作方式只有基本的了解。

1 个答案:

答案 0 :(得分:8)

Q1:否。操作系统将知道文件的大小,seekg()将使用该知识 - 文件的长度是1,100或10000000000字节几乎相同。

Q2:不。它只是设置当前的“获取指针”,在Windows或Linux系统中转换为“SetFilePos”或“lseek”。几乎所有其他操作系统都有类似的概念。