2017-02-03 4 views
-1

Что такое конвертация окон для преобразования байтов в MB?
Рассчитанный размер моей папке (1568653060 байт)Что такое преобразование окон для байтов в mb?

// 1. 
// Get array of all file names. 
string[] a = Directory.GetFiles(path, "*.*"); 

// 2. 
// Calculate total bytes of all files in a loop. 
long b = 0; 
foreach (string name in a) 
{ 
// 3. 
// Use FileInfo to get length of each file. 
    FileInfo info = new FileInfo(name); 
    b += info.Length; 
} 

//b = 1568653060 

//However, googles conversion...convert 1568653060 bytes to mb 
//returns 
//1568653060 b = 1568.65306 mb 

но по моим расчетам

// Return total size in MB int 
float mbValue = (b/1024f)/1024f; 
//mbValue = 1495.98413 
//should return 1496 mb 

НО окна возвращается ....
Размер: 1,45 GB (1,568,653,060 байт)
Размер на диске: 1,46 ГБ (1 568 686 080 байт)
// Преобразование этого в MBs дает мне 1460 МБ ....

где еще 36Mb вышли из?
Мне просто нужно, чтобы это было точно ... к какому методу я должен придерживаться?
Ограничения на загрузку файлов пользователей

+0

Когда вы говорите * «окна возвращаются ...» * Я предполагаю, что вы имели в виду * Проводник *. В этом случае: [Как Explorer вычисляет «Размер на диске»?] (Https://blogs.msdn.microsoft.com/oldnewthing/20160427-00/?p=93365), [Как Explorer вычисляет информацию о размере папки в подсказке папок?] (https://blogs.msdn.microsoft.com/oldnewthing/20120503-00/?p=7713), [Почему Explorer не может определить размер файла?] (https: // blogs.msdn.microsoft.com/oldnewthing/20110315-00/?p=11223). – IInspectable

+0

Для меня 1,568,653,060/1024/1024 = 1495,98 - поэтому он округлен вниз Google использовал 1000 не 1024. – BugFinder

+1

Когда-то был кто-то, кто считал необходимым провести различие между Mega (1.000.000) и Mebi (2^20) Байты. Это заставляет некоторых людей полагать, что разумно использовать 1.000 в качестве фактора, чтобы обозначить байты вместо хорошо установленного 1024 (2^10). Придерживайтесь 1024, если вы не хотите, чтобы люди смеялись над вами. –

ответ

1

Проводник Windows отображает мегабайты, но вычисляет мегабиты. Таким образом, деление на 1024 для каждого последующего блока правильное.

Размер на диске включает в себя пространство, которое должно быть частью файлов по техническим причинам, например, на последней странице, если оно не полностью заполнено. Он также включает в себя другие потоки, а не только $DATA, если они существуют. Он может даже показать 0 байтов для файла, который полностью помещается в его записи в каталоге. Но, как правило, это число всегда будет отличаться от размера содержимого файла.

Смежные вопросы