filesize — Получить размер файла


Получить размер файла без использования System.IO.FileInfo?

Можно ли получить размер файла на С# без использования System.IO.FileInfo ?

Я знаю, что вы можете получить другие вещи, такие как Name и Extension, используя Path.GetFileName(yourFilePath) и Path.GetExtension(yourFilePath) соответственно, но, видимо, не размер файла? Есть ли другой способ получить размер файла без использования System.IO.FileInfo ?

Единственная причина этого в том, что, если я прав, FileInfo захватывает больше информации, чем мне действительно нужно, поэтому для сбора всех этих файлов требуется больше времени, если мне нужно только размер файла. Есть ли более быстрый способ?

c# filepath filesize fileinfo

5 ответов

8 Pete [2013-01-19 01:41:00]

Я выполнил тест, используя эти два метода:

Запустив бит поверх 2300 файлов, GetFileSizeA выполнил 62-63 мс для запуска. GetFileSizeB занял более 18 секунд.

Если кто-то не видит что-то, что я делаю неправильно, я думаю, что ответ ясно, какой метод быстрее.

Есть ли способ воздержаться от фактического открытия файла?


Обновление

Изменение параметров FileAttributes.ReadOnly в FileAttributes.Normal сокращает время так, чтобы эти два метода были идентичны по производительности.

Кроме того, если вы пропустите вызов CloseHandle(), метод GetFileSizeEx станет примерно на 20-30% быстрее, хотя я не знаю, что рекомендую это.

5 Alon Bar [2013-12-19 12:19:00]

Из короткого теста, который я сделал, я обнаружил, что использование FileStream в среднем на 1 миллисекунду меньше, чем использование Pete GetFileSizeB (заняло около 21 миллисекунды по сетевому ресурсу. ). Лично я предпочитаю оставаться в пределах BCL, когда я могу.

Не прямой ответ. потому что я не уверен, что существует более быстрый способ использования платформы .NET.

Вот код, который я использую:

Запустив это, потребовалось 2709 мс для запуска в моем каталоге «Program Files», который составлял около 22720 файлов. Это не сутулость. Кроме того, когда я положил *.txt в качестве фильтра для первого параметра метода GetFiles , он резко сократил время до 461 мс.

Многое будет зависеть от того, насколько быстро ваш жесткий диск, но я действительно не думаю, что FileInfo убивает производительность.

ПРИМЕЧАНИЕ. Я использую это только для .NET 4 +

3 Servy [2013-01-19 01:16:00]


У меня есть небольшое приложение, которое собирает информацию о размере и сохраняет его в массив. но у меня часто есть полмиллиона файлов, давайте или принимаем, и для этого требуется время, чтобы пройти через все эти файлы (я используя FileInfo). Мне просто интересно, был ли более быстрый способ.

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

С другой стороны, параллелизация запросов размера файла может значительно улучшить скорость. (Обратите внимание, что степень улучшения будет в значительной степени основана на вашем дисководе, а не на вашем процессоре, поэтому результаты могут сильно различаться.)

Илон Маск рекомендует:  Что такое код asp iiscompressionscheme

Нужно узнать размер файла

Всем привет.В папке с программой находится файл при выполнении кода его размер нужно определить и записать в TextBox1.

23.09.2013, 21:02

не могу узнать размер файла на сервере
подскажите как узнать размер файла на сервере FTP если я использую библиотеку BytesRoad.Net.Ftp.

Как узнать размер файла перед загрузкой
Для загрузки файлов использую метод DownloadFileAsync(Uri, String) класса WebClient. Загружаемые.

Узнать размер будущего файла изображения еще не записав его на диск
Задача: сохранить изображение Bitmap в формате JPEG с определенным уровнем сжатия, узнать какой.

Как узнать максимальный размер в PictureBox?
Привет!! Хочу у вас узнать как можно узнать максивальные размеры в PIcterBox?

Как узнать размер сериализируемого класса?
Привет. Проблема вообще вот в чем, мне необходимо передать класс по сети, для этого, ясен пень.


Как определить размер файла средствами PHP?

Наверное, Вы часто видите на сайтах подпись с указанием размера файла. Данный показатель сам никто не подписывает. Этот вопрос решается написанием функции на php. В результате она будет выводить строчку вида:

Размер файла: 2.3 Мб
Очень удобно в случае скачивания каких-либо материалов с сайта. Итак, приступим.

Создаём функцию PHP, определяющую размер файла

Функция будет довольно проста и понятна. Использует в себе три встроенные функции:

file_exists — проверка на наличие указанного файла или каталога.

filesize — определить размер файла. Возвращает результат в байтах. Если файл больше 2 Гб, то, в зависимости от сервера, может выводить некорректный результат.

round — встроенная функция, укорачивающая выводимое значения до целого числа и одной десятой после разделительного знака точки.
Функция проверяет наличие самого файла, затем последовательно пытается определить насколько велик размер файла — если больше 1024 байт, то результат следует выводить в Мб, если больше 1024 Мб, то следует выводить в Гб. А в конце каждого этапа встроенная функция round округляет результат с множества цифр до целого значения и одной десятой с разделительным знаком.

Теперь создаём файл функции. Подобные файлы принято содержать в отдельной папке. Например function.

Код PHP (файл function.php)

Функцию мы создали. Далее остаётся её применить.


Код PHP

Всё готово! Пользуйтесь на здоровье!
Спасибо за внимание! И удачи в работе!

Получить размер файла

Вопрос

Евгений Корепов 553

Евгений Корепов 553

  • Продвинутый пользователь
  • Пользователи
  • 553
  • 693 сообщения

  • Город Ухта

Нужно получить размер файла под любыми платформами.

Сейчас использую функцию

Работает, но есть одно но — под Windows, если проверяю exe файл, антивирус (в данном случае Защитник Windows) унюхивает что производится открытие файла и начинает его проверять на вирусы. Из за этого сканирование директории с большим количеством исполняемых файлов подвешивает основной поток приложения.

Вопрос в следующем — нет ли другого способа получения размера? Странно что TFile, TPath или TDirectory не содержат такого полезного метода.

В данный момент двигаюсь в направлении отдельного потока получения размера, но решение не красивое, хочется быстро и сразу.

Filesize — Получить размер файла

Q: Как узнать размер файла?

A:Один их самых простых способов узнать размер файла — открыть его и прочитать до конца. Количество прочитанных байт и будет реальным размером файла.
Сделать это можно вручную, а можно одной из готовых функций, некоторые из которых тем не менее реализованы именно таким способом.
[!] Чтобы получить верный результат для всех типов файлов (текстовых и бинарных), необходимо открывать файл в бинарном режиме. Это связано с тем, что в текстовом режиме комбинации ‘\r\n’ при чтении преобразуются в ‘\n’.

Илон Маск рекомендует:  Синтаксис JSON


Как определить размер файла на PHP

Для того чтобы определить размер файла можно воспользоваться стандартной функцией PHP. Но как отобразить его размер не в байтах а в нормальном формате?

PHP — узнать размер файла и отобразить в килобайтах, мегабайтах или гигабайтах

Задача: получить вывод файла в виде 12.4 Мб. Для решения будем использовать несколько встроенных функций. Изначально размер файла будет отображен в байтах. Например, такой код:

выведет размер именно в байтах (12314), что крайне неудобно. Одна из функций filesize() принимает своим аргументом путь к файлу относительно корня с самого сервера (может понадобиться $_SERVER[‘DOCUMENT_ROOT’]) — это важный момент, поскольку указав не верный путь, ничего не произойдет.

Для того чтобы написать функцию, нужно понимать простейшую математику:
в 1 килобайте (Кб) — 1024 байт
в 1 мегабайте (Мб) — 1024 килобайт
в 1 гигайбайте (Гб) — 1024 мегабайт

Исходя из этого, пишем небольшую функцию для читаемого отображения байт в нужный формат:

Данный код переконвертирует число в нужную величину, исходя из размера файла. Основная проблема, которая может возникнуть, это правильный путь к файлу, всё остальное должно отработать как часы �� .

Также, в примере используется функция округления round(), при помощи которой читаемость становится еще более понятней;

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.


Какие услуги предоставляю:
— Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
— Разработка функционала с нуля и доработка кода на уже созданных проектах;
— Адаптивная вёрстка макетов и натяжка на Битрикс;
— Парсинг файлов и выгрузка на сайт (форматы — CSV, XML, XLSX, JSON)
— Интеграции со сторонними сервисами по API;
— Многоязычные версии и многое другое.

Настройка максимального размера файла загрузки через HTML форму

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

Для серверов Apache с установленным на них PHP можно ограничить такой процесс 2мя способоми:

  1. ограничить закачку файла настройками самого PHP
  2. ограничить закачку файла используя механизмы отправки запроса формы на сервер (только методом POST)

Если первый вариант вполне распространен среди администраторов и программистов, то второй, более простой (даже можно сказать пользовательский) — не очень популярен.

Мне бы хотелось рассмотреть именно его.
Итак, начнем с того, что укажем в форме method=»post» и enctype=»multipart/form-data» . Далее создадим скрытый элемент формы

В значении элемента MAX_FILE_SIZE указываем нужный нам максимальный размер в байтах загружаемых файлов.
Особое внимание нужно обратить на то, что этот элемент должен стоять ДО полей выбора файлов (например, сразу после тега form):

Что происходит на практике (хотя некоторые конфигурации PHP и Apache запрещают данный метод):
PHP получает первым делом наш параметр ограничения размера файлов. Далее считывает его значение, далее «сбрасывает» элементы массива $_FILES, где размер файла превышал необходимый.

Пример того, что он творит с таким элементом:
Array ( [photo] => Array ( [name] => my_photo.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 )

Как видим он ставит для такого элемента код ошибки отличный от 0 (0 = удачная загрузка), данная ошибка гласит: «The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form» или «Размер загруженного файла превысил значение MAX_FILE_SIZE, установленное в HTML форме».

Илон Маск рекомендует:  $R - Директива компилятора Delphi

Внимание:

  • некоторые браузеры могут (пользуясь данной директивой) сами обрывать закачку файла на сервер (природа данного эффекта мне лично не известна и в документациях браузеров про нее не нашел)
  • это НЕ обязательная директива для браузеров
  • в браузерах данное ограничение можно легко обойти
  • в Mozilla Firefox (тестировалось на версиях 2 и 3) ограничение на стороне браузера не срабатывало
  • в IE начиная с 6ой версии (на ниже версиях не тестировал) и Opera (начиная с 8.5ой версии) работало
  • в теории (сам не проверял) параметр ограничение через форму MAX_FILE_SIZE приоритетнее параметра upload_max_filesize в php.ini


Более подробно об ошибках, которые может вернуть сервер, можно прочитать на сайте PHP.
подробное описание механизма на php.net

ЗЫ: Надеюсь, данная статья поможет многим кодерам, особенно тем, кто не имеет прав сервера на изменение настроек PHP на сервере.

ЗЗЫ: В своем топике я просто хотел описать один из механизмом и свой опыт его использования. Это не в коем случае НЕ пособие к обязательным действиям, так как он всего лишь является дополнительным, в каких-то случаях удобным, механизмом проверки.

ЗЗЗЫ: Отредактирован с учетом выссказываний, пожеланий, споров и советов в комментариях.

Как узнать размер файла в Java?

Сегодня мы узнаем способ получить размер файла в Java. Как всегда, сначала опишем что, как и почему в теории, а затем на практике закрепим знания.

Как узнать размер файла. Теория

Метод java.io.File length() может быть использован для получения размера файла. Этот метод возвращает размер файла в байтах.

При использовании метода length() вы всегда должны проверить файл — существует он или нет. Если файл не существует, этот метод возвращает ноль.

Как узнать размер файла в Java. Практика

Вот пример простой программы, которая вычисляет размер файла на Java:


Получить размер файла

Вопрос

Евгений Корепов 553

Евгений Корепов 553

  • Продвинутый пользователь
  • Пользователи
  • 553
  • 693 сообщения
  • Город Ухта

Нужно получить размер файла под любыми платформами.

Сейчас использую функцию

Работает, но есть одно но — под Windows, если проверяю exe файл, антивирус (в данном случае Защитник Windows) унюхивает что производится открытие файла и начинает его проверять на вирусы. Из за этого сканирование директории с большим количеством исполняемых файлов подвешивает основной поток приложения.

Вопрос в следующем — нет ли другого способа получения размера? Странно что TFile, TPath или TDirectory не содержат такого полезного метода.

В данный момент двигаюсь в направлении отдельного потока получения размера, но решение не красивое, хочется быстро и сразу.

Filesize — Получить размер файла

Указанная функция почему-то возвращает всегда либо 0 либо 65535 (возвращает в WORD, если DWORD — тогда 4 гига — это вроде как размер файла такой!). Ясно что глюк. Залез в СДК там писано такое — в СЛУЧАЕ ОШИБКИ возвращается максимальное значение. Пробовал всяко разно вызывать — результат один. Подскажите кто знает!

Можно и без WinApi, с помощью потоков, например так:

var
In : TFileStream;
SizeIn : cardinal;
begin
In := TFileStream.Create(пишу по памяти, посмотри в хелпе пар-ры);
SizeIn := In.что-то вроде Size
In.Free;
end;

2 Диман:
покажи, как вызываешь (код, включая открытие файла)

var
FileSize,FileSizeHigh:Cardinal;
fHandle:THandle;
begin
fHandle:=CreateFile(PChar(FileName),GENERIC_READ or GENERIC_WRITE,
0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if fHandle<>INVALID_HANDLE_VALUE then
FileSize:=GetFileSize(fHandle,@FileSizeHigh);

Ура! Заработала! Огромное спасибо что не оставили в беде.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL