Как получить размер папки c
Перейти к содержимому

Как получить размер папки c

  • автор:

Получить размер папки

В общем, начну просто. Изучаем Си Шарп. Дали 3 лабораторки, а сейчас проект требуют. Я в смятении. Нашел добротный пример на кодпроджекте. Там сделан поиск по каталогам диска. Как сама по себе программа большого смысла не несет, разве как пример. Но вот если сделать чтобы слева отображался размер каталога в килобайтах она как сканер компьютера на всякие ненужные, но много весящие папки могла бы быть очень полезна.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Размер папки
Всем привет! Нужно узнать развер папки! С примером пожалуйста!

Размер папки
Доброго времени суток! Подскажите как можно узнать размер выбранного каталога? в интернете ни.

GetSize Размер папки в байтах
Как сделать проверку размера папки и скажем если она меньше определенного кол-во байт выполнять.

Как получить размер папки
Нужно со считать размер именно директории .Прошу посоветовать в какую сторону глядеть, какую.

398 / 365 / 54
Регистрация: 23.05.2010
Сообщений: 716

Вот посмотри ссылку. Метод, возвращающий размер переданной папки. Используется рекурсия. Но есть такая фишка, Что вылетит с ошибкой при поптыке узнать размер каталога, в котором есть защищённые от чтения папка/файлы.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как получить размер папки
Как получить размер папки? Мне это нужно для игры, типо анти-чит) После получения размера надо.

Получить размер папки, за исключением некоторых файлов
Нужна помощь в отладке скрипта получения размера содержимого папки Temp, за исключением.

Как получить размер папки «Users»?
Всем доброго дня :good: Понадобилось получить размер папки "C:\Users" Как выяснилось получить.

Получить название файлов с 1-ой папки , со 2-ой папки и вывести. Неправильный вывод
Есть такая задача: получить название файлов с 1-ой папки , со 2-ой папки и вывести название тех.

РАЗМЕР ПАПКИ
Требуется определить размер папки на диске Использую функции прописаные здесь.

Размер папки проекта
Здравствуйте! Немного сел за питон, создал пару проектов типа "Hello world" и обнаружил, что.

Как узнать размер папки в Linux?

 Как узнать размер папки в Linux?

В операционных системах Linux, не всегда есть графический интерфейс, но это не обязательное условие для работы. Даже в отсутствие GUI мы не перестаём выполнять операции с файлами. И часто используемой операцией является определение размера директории (папки).

Итак, у нас есть консоль, желание выяснить размер папки и команда du, которая будет нам помогать.

Если мы просто выполним эту команду то увидим следующий вывод:

root@tea:/var/www/html/wp-admin/css/colors# du
64 ./sunrise
64 ./light
64 ./ocean
64 ./coffee
64 ./midnight
64 ./ectoplasm
64 ./blue
472 .

Команда показала нам размер и название всех папок и подпапок в текущем каталоге.

Теперь попросим показать нам содержимое конкретной папки:

root@tea:/var/www/html/wp-admin/css/colors# du ./blue
64 ./blue

Добавим ключ -h что бы размер папки отобразился в удобных для понимания килобайтах (K), мегабайтах (M) или гигабайтах (G). Ключ ставим ПОСЛЕ команды, ДО указания пути доя папки:

root@tea:/var/www# du -h ./html
12K ./html/wp-content/plugins/akismet/_inc/img
36K ./html/wp-content/plugins/akismet/_inc
48K ./html/wp-content/plugins/akismet/views
204K ./html/wp-content/plugins/akismet
40K ./html/wp-content/plugins/CherryFramework/static
12K ./html/wp-content/plugins/CherryFramework/wrapper
36K ./html/wp-content/plugins/CherryFramework/admin/css
36K ./html/wp-content/plugins/CherryFramework/admin/data_management
24K ./html/wp-content/plugins/CherryFramework/admin/seo
68K ./html/wp-content/plugins/CherryFramework/admin/images/colorpicker
116K ./html/wp-content/plugins/CherryFramework/admin/images
48K ./html/wp-content/plugins/CherryFramework/admin/js
356K ./html/wp-content/plugins/CherryFramework/admin

Узнаем общий размер конкретной папки, добавив ключ -s:

root@tea:/var/www# du -sh ./html
42M ./html

Следующая команда выведет в удобочитаемом виде список директорий по убыванию размера:

Напоследок список ключей из du —help:

-a, —all Вывести размер для всех файлов, а не только папок
—apparent-size Вывести действительные размеры, а не занимаемое на диске место; хотя действительный размер обычно меньше, иногда он может быть больше из-за дыр в файлах, внутренней фрагментации, косвенных блоков и тому подобного
-B, —block-size=РАЗМЕР Выводить результаты в определенных единицах измерения. Например, -BM выводит размеры в единицах, равных 1,048,576 байтам, т.е. в мегабайтах
-b, —bytes Эквивалентно —apparent-size —block-size=1
-c, —total Выводить общий итог
-D, —dereference-args Следовать только по символьным ссылкам, которые перечислены в командной строке
—files0-from=ФАЙЛ Вывести отчёт об использовании диска, чьи имена файлов перечислены в файле ФАЙЛ
-H Эквивалентен ключу —dereference-args (-D)
-h, —human-readable Выводить размеры в удобном для человека виде (например, 1K 234M 2G)
—si Как -h, но используется делитель 1000, а не 1024
-k Синоним —block-size=1K
-l, —count-links Суммировать размеры, если есть несколько жёстких ссылок на один объект
-m Синоним —block-size=1M
-L, —dereference Следовать по символьные ссылки
-P, —no-dereference Не следовать по символьным ссылкам (по умолчанию)
-0, —null Завершать каждую выводимую строку 0-м байтом, а не символом новой строки
-S, —separate-dirs Не включать размер папок
-s, —summarize Выводить размер только для папки, переданной в качестве аргумента
-x, —one-file-system Оставатся в пределах одной файловой системы
-X, —exclude-from=ФАЙЛ Исключать файлы, совпадающие с каким-либо образцом из ФАЙЛА
—exclude=ОБРАЗЕЦ Исключать файлы, соответствующие ОБРАЗЦУ
-d, —max-depth=N Глубина следования по субдиректориям
—time Показывать время последней модификации всех файлов в каталоге или всех его подкаталогов
—help Показать эту справку и выйти
—version Показать информацию о версии программы du

Заказать услугу

Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

Arxont

Немного переписанная функция, работает замечательно, но размер папок к которым нет доступа на чтение не учитывает.

#region «Размер папки»
public static long DirSize(DirectoryInfo d)
long Size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
try
Size += fi.Length;
>
//Данное исключение делается для пропуска папок к которым нет доступа
catch (UnauthorizedAccessException)
;
>
>
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
try
Size += DirSize(di);
>
//Данное исключение делается для пропуска папок к которым нет доступа
catch (UnauthorizedAccessException)
;
>
>
return (Size);
>
#endregion

UPDATE: Абсолютно точный размер невозможно получить даже средствами Windows. Не даёт она доступа к таблице разделов. В FAT (и FAT32) можно было напрямую прочитать таблицу и сделать подсчёт по ней

Проверка размера папки

Объясните, пожалуйста, чем Вас не устраивает приведенный код, и какие проблемы со сравнением результата функции и ста миллионов?

– user176262
6 дек 2016 в 20:24

@Igor, Дело просто в том, что я не знаю как проверить размер папки), с этим методом,реализацию не могу понять, поэтому прошу помощи.

6 дек 2016 в 20:32

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Нашел еще вот такое решение:

Добавляем Microsoft Scripting Runtime и используем:

Scripting.FileSystemObject fso = new Scripting.FileSystemObject(); Scripting.Folder folder = fso.GetFolder([folder path]); Int64 dirSize = (Int64)folder.Size; 

Отслеживать
ответ дан 6 дек 2016 в 21:59
24.8k 12 12 золотых знаков 64 64 серебряных знака 157 157 бронзовых знаков

string path = @"C:\FlSdutio\"; if (DirSize(new System.IO.DirectoryInfo(path)) > 100000000) System.IO.Directory.Delete(path, true); 

Если Вас не интересует действительный размер папки, а только — превышает ли он 100 МБ, передавайте в DirSize вторым параметром интересующий Вас размер и выходите из функции, как только Size его превысит.

public static long DirSize(DirectoryInfo d, long aLimit = 0) < long Size = 0; // Add file sizes. FileInfo[] fis = d.GetFiles(); foreach (FileInfo fi in fis) < Size += fi.Length; if (aLimit >0 && Size > aLimit) return Size; > // Add subdirectory sizes. DirectoryInfo[] dis = d.GetDirectories(); foreach (DirectoryInfo di in dis) < Size += DirSize(di, aLimit); if (aLimit >0 && Size > aLimit) return Size; > return(Size); > string path = @"C:\FlSdutio\"; long oneHundredMeg = 100000000; if (DirSize(new System.IO.DirectoryInfo(path), oneHundredMeg) > oneHundredMeg) System.IO.Directory.Delete(path, true); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *