View previous topic :: View next topic |
Author |
Message |
Makar
Joined: 15 Oct 2013 Posts: 5
|
(Separately) Posted: Tue Oct 15, 2013 20:42 Post subject: Размер каталога |
|
|
Доброго времени суток!
Дали мне задание, написать программу, которая будет повторять действие комбинации клавиш CTRL+L TotalCommander'a.
На C# (WindowsForms) файловый менеджер написал, размеры каталогов и файлов получаю. Далее возникла проблема: размер файла с учетом размера кластера определить просто (размер файла делим на размер кластера, округляем в большую сторону и умножаем на размер кластера), а для каталога это не подходит (контрольная программа - TotalCommander). Подскажите пожалуйста, как определить размер каталога с учетом размера кластера? |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Tue Oct 15, 2013 20:58 Post subject: |
|
|
Суммировать размеры файлов с учётом размера кластера... |
|
Back to top |
|
|
Makar
Joined: 15 Oct 2013 Posts: 5
|
(Separately) Posted: Tue Oct 15, 2013 21:26 Post subject: |
|
|
Serge Yolkin wrote: | Суммировать размеры файлов с учётом размера кластера... |
не работает
Code: | public long DirSize(DirectoryInfo d)
{ long Size = 0;
DirectoryInfo[] dis = d.GetDirectories();// тянем каталоги
foreach (DirectoryInfo di in dis)
{ try
{ Size += DirSize(di);//и понеслась рекурсия
count_dir++;
}
catch
{//DirectoryInfo получает исключение при защищенных от
//чтения файлах, если не ошибаюсь
count_dir++;
}
}
FileInfo[] fis = d.GetFiles();//тянем файлы из текущей
foreach (FileInfo fi in fis)
{ Size += fi.Length;
count_file++;
}
return (Size);//возвращаем размер всего каталога (в байтах)
}
|
если полученный размер (с тем, что выдает ТС - совпадает, так же как количество файлов и каталогов) поделить на размер кластера, округлить в большую сторону и умножить на размер кластера, то результат не совпадает с ТС. Скорее всего, на него влияет количество папок с файлами |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Makar
Joined: 15 Oct 2013 Posts: 5
|
(Separately) Posted: Tue Oct 15, 2013 22:14 Post subject: |
|
|
извиняйте, сбрехал я, голова уже не сильно работает, Serge Yolkin wrote: | Суммировать размеры файлов с учётом размера кластера... | работает, но для простых файлов (*.doc, *.txt, *.ехе). А вот каталог с файлами (*.sdf, *.sln и прочими файлами проекта VS) выдает размер больше. Архивов там нет точно, сжатых вроде тоже |
|
Back to top |
|
|
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Tue Oct 15, 2013 22:14 Post subject: |
|
|
IMHO, на размер с учётом кластеров должна влиять фрагментация файла. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Wed Oct 16, 2013 13:25 Post subject: |
|
|
MVV wrote: | Тотал не считает исключенные файлы. |
Начиная с версии 8.50... |
|
Back to top |
|
|
Makar
Joined: 15 Oct 2013 Posts: 5
|
(Separately) Posted: Thu Oct 17, 2013 19:03 Post subject: |
|
|
пробовал через свойства папки, с тоталом совпадает. Музыкальные файлы (они сжатые, если не ошибаюсь) и архивы как-то иначе считаются? У меня выходит размер выходит на 13 кластеров больше (количество файлов совпадает, скрытых нет, хотя программа их видит) |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Thu Oct 17, 2013 20:31 Post subject: |
|
|
У тебя, вижу, сложности с NTFS-сжатием. NTFS-сжатие - это сжатие на уровне файловой системы, выражается в том, что блоки (по 16 кластеров, кажется) на диске сохраняются в сжатом виде, при этом в MFT указывается, сколько физических кластеров это заняло. И при подсчете размеров с учетом кластеров получается значение, меньшее (если сжатие успешное), чем при подсчете непосредственных размеров. Сжат файл или нет, определяется наличием атрибута C, и это никак не связано с содержимым файла. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Makar
Joined: 15 Oct 2013 Posts: 5
|
(Separately) Posted: Thu Oct 24, 2013 14:39 Post subject: |
|
|
всем спасибо за помощь! |
|
Back to top |
|
|
|