21xrx.com
2024-11-05 12:21:56 Tuesday
登录
文章检索 我的文章 写文章
C++如何获取文件大小?
2023-06-30 08:06:25 深夜i     --     --
C++ 文件 大小 获取

C++是一门面向对象的编程语言,可以用来编写各种类型的程序,包括文件操作。在文件操作中,经常需要获取文件的大小,以便程序可以更好地处理文件。下面介绍几种获取文件大小的方法。

方法一:使用标准库函数

C++的标准库提供了一个函数用来获取文件大小,该函数名为std::filesystem::file_size。该函数的原型如下:

std::uintmax_t file_size(const std::filesystem::path& p);

该函数接收一个路径参数,返回文件的大小,单位为字节。下面是一个示例程序:


#include <filesystem>

#include <iostream>

int main() {

  std::filesystem::path myfile("myfile.txt");

  std::uintmax_t filesize = std::filesystem::file_size(myfile);

  std::cout << "File size: " << filesize << " bytes\n";

  return 0;

}

方法二:使用C标准库函数

C标准库也提供了一个函数用来获取文件大小,该函数名为fseek和ftell。下面是一个示例程序:


#include <cstdio>

#include <iostream>

int main() {

  FILE* fp = std::fopen("myfile.txt", "rb");

  std::fseek(fp, 0, SEEK_END);

  std::long int filesize = std::ftell(fp);

  std::fclose(fp);

  std::cout << "File size: " << filesize << " bytes\n";

  return 0;

}

方法三:使用Windows API

如果程序运行在Windows操作系统上,可以使用Windows API函数获取文件大小。Windows API提供了GetFileSizeEx函数用来获取文件大小,下面是一个示例程序:


#include <Windows.h>

#include <iostream>

int main() {

  HANDLE hFile = CreateFile("myfile.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

  if (hFile == INVALID_HANDLE_VALUE)

    // 文件打开失败

    return -1;

  

  LARGE_INTEGER li;

  GetFileSizeEx(hFile, &li);

  std::cout << "File size: " << li.QuadPart << " bytes\n";

  CloseHandle(hFile);

  return 0;

}

总结:

本文介绍了C++中获取文件大小的几种方法,包括使用标准库函数、C标准库函数和Windows API函数。开发者可以根据自己的需要选择适合自己的方法来获取文件大小。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复