首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么std::filesystem::file_size(文件)与真实文件大小不同?

std::filesystem::file_size(文件)与真实文件大小不同的原因可能有以下几点:

  1. 文件系统的元数据:文件系统中的文件大小是通过元数据来记录的,包括文件的大小、创建时间、修改时间等信息。但是,这些元数据可能会因为文件系统的特性或者其他因素而不准确。例如,某些文件系统可能会使用簇(cluster)或块(block)来存储文件,而文件的大小可能不是精确的字节数,而是簇或块的整数倍。因此,std::filesystem::file_size()返回的大小可能会与真实文件大小存在差异。
  2. 文件压缩或加密:如果文件被压缩或加密,那么std::filesystem::file_size()返回的大小是解压或解密后的文件大小,而不是压缩或加密前的原始文件大小。因此,如果文件经过压缩或加密处理,std::filesystem::file_size()返回的大小会与真实文件大小不同。
  3. 符号链接或硬链接:如果文件是符号链接或硬链接,std::filesystem::file_size()返回的是链接文件的大小,而不是链接指向的实际文件的大小。因此,如果文件是链接文件,std::filesystem::file_size()返回的大小会与真实文件大小不同。
  4. 文件权限或访问限制:在某些情况下,文件的大小可能会受到文件权限或访问限制的影响。如果当前用户没有足够的权限或访问权限来读取文件的全部内容,std::filesystem::file_size()可能会返回部分文件的大小,而不是完整的文件大小。

总结起来,std::filesystem::file_size()返回的文件大小可能会与真实文件大小存在差异,这是由于文件系统的特性、文件的压缩或加密、链接文件的存在以及文件的权限或访问限制等因素所导致的。如果需要获取精确的文件大小,可以考虑使用其他方法或工具来获取。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

蓝桥ROS机器人之现代C++学习笔记第 8 章 文件系统

Boost.Filesystem 库将与 TR2 文件系统提案保持一致,因为它通过 TR2 流程工作。但是请注意,Boost.Filesystem 和 TR2 提案之间的命名空间和标头粒度不同。...头文件 提供 C++ 标准库的 fstream 头文件相同的组件,除了文件由 basic_path 对象而不是 char * 标识。...常规文件:将名称现有文件(即硬链接)相关联的目录条目。如果支持多个硬链接,则在删除最后一个硬链接后删除文件。 符号链接:将名称路径相关联的目录条目,该路径可能存在也可能不存在。...获取文件大小代码: #include #include namespace fs = boost::filesystem...= 2 ) { std::cout << "Usage: file_size path\n"; return 1; } std::cout << "sizeof(intmax_t

65120

DragonOS虚拟文件系统概述

同时对内核中的不同文件系统提供了统一的抽象。各种具体的文件系统可以挂载到VFS的框架之中。   VFS相关的系统调用有open(), read(), write(), create()等。...dentry对象为真实文件系统上的目录结构建立了缓存,一旦内存中存在对应路径的dentry对象,我们就能直接获取其中的信息,而不需要进行费时的磁盘操作。...请注意,该方法具体文件系统有关,需要在具体文件系统之中实现。 文件描述符对象   当一个进程试图通过VFS打开某个文件时,我们需要为这个进程创建文件描述符对象。...该数据结构定义在kernel/filesystem/VFS/VFS.h中,结构如下: struct vfs_index_node_t { uint64_t file_size; // 文件大小...当前inode的操作接口 private_inode_info   具体文件系统相关的inode信息。

44820

14.9 Socket 高效文件传输

return ref; } else { char ch = '/'; char* ref = strrchr(Path, ch) + 1; return ref; }}// 获取文件大小...if (total_length >= file_size) { std::cout << "文件接收完毕, 接收字节数: " << total_length <<...false; } send(ptr, (char*)&file_size, sizeof(int), 0); std::cout << "发送文件长度: " << file_size << std...当有客户端连接请求到来时,accept函数会接收请求,并创建一个新的socket客户端进行通信。在客户端通信的过程中,可以通过send和recv函数进行数据的传输,实现文件的上传和下载功能。...之后通过connect函数服务端建立连接,连接成功后调用SendFile函数进行文件传输,将指定的文件发送到服务端。文件传输完成后,关闭socket连接,清除Winsock资源。

53750

Java - 从文件压缩聊一聊IO一二事

public static File COMPRESS_FILE = null; //文件大小 public static long FILE_SIZE = 0;...Many * operating systems can transfer bytes directly from the filesystem cache * to the target channel...---- Version 5 : MMAP NIO中新出的另一个特性就是内存映射文件,内存映射文件为什么速度快呢?其实是在内存中开辟了一段直接缓冲区,数据直接作交互。...---- 直接缓冲区和非直接缓冲区 非直接缓冲区 NIO通过Channel连接磁盘文件应用程序,通过ByteBuffer缓冲区存取数据进行双向的数据传输。...---- 比较 那既然直接缓冲区的性能更高、效率更快,为什么还要存在两种缓冲区呢?因为直接缓冲区也存在着一些缺点: (1)不安全 (2)消耗更多,因为它不是在JVM中直接开辟空间。

39920

python网络编程-socket套接字通信循环-粘包问题-struct模块-02

前置知识 不同计算机程序之间数据的传输 ? 应用程序中的数据都是从程序所在计算机内存中读取的。...内存中的数据是从硬盘读取或者网络传输过来的 不同计算机程序数据传输需要经过七层协议物理连接介质才能到达目标程序 socket (套接字) json.dump/dumps 只是把数据类型序列化成字符串...先接收字典的报头 解析拿到字典的数据长度 接收字典 从字典中获取真实数据的长度 循环获取真实数据 ps:为什么要多加一个字典 pack打包的数据长度(的长度)有限,字典再打包会很小(长度值也会变很小)...file_name = recv_dict.get('file_name') file_size = recv_dict.get('file_size') # 4.循环获取真实数据..., path) # 获取文件大小 file_size = os.path.getsize(file_path) # 定义一个字典

1.1K30

C++ Json 变量的初始化

参考链接: C++ : List的不同初始化方法 1、从字符串 解析     [cpp]     view plain     copy    int ParseJsonFromString()   {...UP000000"       int code = root["code"].asInt();    // 访问节点,code = 100     }     return 0;   }    2、从文件中解析...["files"].size();             // 遍历数组       for(int i = 0; i < file_size; ++i)       {         Json::...都是用下标去访问,但是这个中间有个问题:比如谁一个json的数字变量a,你要获取第一个数组中的元素给b,不能直接用b=a[0],而是得先定义一个int i=0;b=a[i],不然编译的时候会报错,不知道这是为什么...= root["files"].size();   for(int i = 0; i < file_size; ++i)     root["files"][i]["exifs"] = arrayObj

2.2K20

GitHub 下载东西很慢?不存在的~!

一提到 GitHub,大家第一个想到的一定是 clone 或者下载项目,可是大家在 clone 或者下载的时候会发现很慢,为什么?怎么解决?接下来我就着重解决这个问题。 为什么很慢? ?...下面我就做一个大概的设计,如果下载之前可以得到文件的大小就用一个进度条表示下载进度,如果没有获取到文件大小我们就显示下载了多少,两个都要能够显示下载时间。 在这里我先设计进度条,再设计下载器。...file_name self.download_location = download_location 接下来就是设计下载的方法,这个方法有点繁琐,我就懒的细讲了,大概就是分成两种情况讨论——能获取文件大小不能获取文件大小...= int(response.headers['Content-Length']) print('文件大小:', self.format_unit(file_size)...= int(response.headers['Content-Length']) print('文件大小:', file_size)

22.1K70
领券