C# 无法将 FileSize 从字节转换为 GB

标签 c# filesize

<分区>

我正在使用 C# 计算文件大小:-

 FileInfo info = new FileInfo(file);
 uint dummy, sectorsPerCluster, bytesPerSector;
 int result = GetDiskFreeSpaceW(info.Directory.Root.FullName, 
                    out sectorsPerCluster, out bytesPerSector, out dummy, out dummy);
 if (result == 0) throw new Win32Exception();
 uint clusterSize = sectorsPerCluster * bytesPerSector;
 uint hosize;
 uint losize = GetCompressedFileSizeW(file, out hosize);
 long size;
 size = (long)hosize << 32 | losize;
 var x = (((size + clusterSize - 1) / clusterSize) * clusterSize);  // in bytes

但是,当我尝试将其转换为 GB 时:-

x/ (1024 * 1024 * 1024)

我总是得到 0 作为答案。我假设这与 x 的数据类型有关。有人可以帮助我理解这一点吗?

最佳答案

它正在做整数除法。对于小于 1GB 的任何内容,您都会看到 0,即使超过 1GB,您仍然只会看到整数。试试这个:

x/ (1024.0 * 1024.0 * 1024.0)

x/ (1024D * 1024D * 1024D)

并确保将结果放入支持浮点值的对象中。也许你可以改变:

var x = 

double x = 

关于C# 无法将 FileSize 从字节转换为 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43722919/

相关文章:

android - 较小的 APK 大小和较大的 Assets ?

c++ - 用C++查找文件大小

c# - 使用 C# 的 GnuPG 包装器

c# - 停止需要很长时间的操作使负载均衡器超时

c# - 如何修改 ListView 栏?

c# - 从返回随机字符串的函数中看到相同的结果

php - PHP 中的 Youtube API > 上传仅传输 76 个大文件大小的 block

java - java文件的大小有限制吗?

javascript - 是否有最大 javascript 文件大小,浏览器可以处理什么?

c# - 为 osx 创建安装程序时合并 Mono 失败