Оптимальный размер файла подкачки Windows. Размеры файлов и папок или что такое КБ, МБ, ГБ Как определить объем группы файлов

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

Конструкция НМД сложнее, чем у НМЛ, а следовательно, выше их стоимость. В НМД в качестве носителей данных используется пакет магнитных дисков (или плоттеров), закрепленных на одном стержне, вокруг которого они вращаются с постоянной скоростью. Поверхность магнитного диска, покрытая ферромагнитным слоем, называется рабочей.

Первые подобные устройства были оборудованы сменными пакетами МД. Вставленные в кожух с герметически закрывающимся поддоном, они образовывали компактные единицы хранения, именуемые томами. Наиболее распространенными емкостями томов были 7.25, 29.100 Мбайт. Оператор ставил пакет на шпиндель устройства, снимал кожух (при этом пакет автоматически фиксировался на шпинделе) и включал двигатели раскрутки пакета. После достижения определенной скорости вращения осуществляется ввод в пространство между дисками пакета блока магнитных головок («гребенки»).

Принцип размещения головок - плавающий, поскольку они удерживаются на необходимом расстоянии от поверхности диска расходящимися потоками воздуха, возникающими при вращении пакета. В дальнейшем в основном применялись или полноконтактные головки (гибкие диски), или механически фиксируемые в вакууме на определенном расстоянии от поверхности («винчестер»). Попытки использовать жидкие среды (различные масла) для обеспечения необходимого размещения головок успеха не имели.

Количество магнитных головок равно числу рабочих поверхностей на одном пакете дисков. Если пакет состоит из 11 дисков, то механизм доступа состоит из 10 держателей с двумя магнитными головками на каждом из них. Совокупность дорожек, к которым имеется доступ при фиксированном положении блока, называется цилиндром. Держатели магнитных головок объединены в единый блок таким образом, чтобы обеспечить их синхронное перемещение вдоль всех цилиндров. Фиксируя блок механизма доступа на каком-либо из цилиндров, можно сделать переход с одной дорожки на другую данного цилиндра путем электронного переключения головок.

Любая операция чтения (записи) информации с (на) магнитного диска состоит из трех этапов. На первом этапе происходит механический подвод магнитной головки к дорожке, содержащей требуемые данные. На втором этапе обеспечивается ожидание момента, пока требуемая запись не окажется в зоне магнитной головки. На третьем этапе осуществляется собственно процесс обмена информацией между вычислительной машиной и магнитным диском. Таким образом, общее время, затрачиваемое на операцию записи-считывания, состоит из суммы времен поиска соответствующей дорожки, ожидания подвода записи (так называемое время ротационного запаздывания) и обмена с ЭВМ. Максимальное значение времени ротационного запаздывания равно времени, за которое совершается полный оборот магнитного диска.

Существует несколько способов физического сохранения данных на жестком диске. Обычные жесткие диски используют «вертикальное» отображение. Данные записываются сначала на одном цилиндре сверху вниз, затем головки переходят на другой цилиндр и так далее. При «горизонтальном» отображении сначала данные записываются последовательно от цилиндра к цилиндру на поверхности одного диска, затем также на поверхности следующего плоттера и так далее Такой способ лучше подходит для записи непрерывного высокоскоростного потока данных, например при записи «живого» видео.

Механизм герметически запечатан в корпус с частичным вакуумом внутри. Эту конструкцию часто называют главным дисковым агрегатом (HDA). Среда внутри жесткого диска должна быть очищена от пыли, для этого воздух, попадающий в HDA, пропускается через специальные фильтры. Двигатель, вращающий диск с постоянной скоростью, измеряемой в оборотах в минуту (rpm), включается при подаче питания на диск и остается включенным до снятия питания.

Между пластинами существует расстояние для читающей/записывающей головки, установленной на конце двигающегося рычага. Головка удалена от пластины на долю миллиметра. В первых системах эта дистанция составляла 0.2 миллиметра, на сегодняшний день она сокращена до 0.07 миллиметров. Поэтому малейшее загрязнение может разрушить головку, сблизив ее с диском, а также повредить магнитное покрытие диска.

Головки рассчитаны таким образом, чтобы касаться диска только после его остановки, когда питание отключено. При снижении оборотов вращения воздушный поток ослабевает и, когда прекращается полностью, головка осторожно касается поверхности диска. Точку касания называют зоной посадки LZ (land zone), которая специально предназначена для касания головки и не содержит данных.

Когда диск форматируют на физическом уровне, он разделяется на секторы и дорожки. Физически дорожки расположены друг над другом и образуют цилиндры, которые затем делятся по секторам. В одном секторе 512 байтов. Сектор - минимальная единица измерения размера диска. Все жесткие диски имеют резервные сектора, которые используются его схемой управления, если на диске обнаружены дефектные секторы.

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

Процесс управления плотностью записи называется прекомпенсацией. Для компенсации различной плотности записи используют метод зонно-секторной записи (Zone Bit Recording), где все пространство диска делится на зоны (восемь и более), в каждую из которых входит обычно от 20 до 30 цилиндров с одинаковым количеством секторов.

В зоне, расположенной на внешнем радиусе (младшая зона), записывается большее количество секторов на дорожку (120-96). К центру диска количество секторов уменьшается и в самой старшей зоне достигает 64-56. При этом емкость жестких дисков можно увеличить приблизительно на 30 %.

С увеличением плотности записи на диск возникают трудности при детектировании пиков аналоговых сигналов , поступающих от магнитных головок. В последнее время для устранения этого недостатка стали применять метод PRLM (Partial Response Maximum Likelihood), в котором используется специальный алгоритм цифровой фильтрации входного сигнала.

Стандартный объем DVD диска равен 4,7 Гб. Еще бывают двусторонние DVD диски. Это означает, что запись может быть с двух сторон - и с одной, и со второй. У таких дисков объем 9,4 Гб. Также существуют двухслойные диски, но они менее распространены. У таких дисков объемы следующие: 1-сторонние 2-слойные - 8,5 Гб; 2-сторонние 2-слойные - 17,1 Гб.

Как узнать размер файла или папки

Чтобы узнать размер файла или папки с файлами, наведите на нее курсор (стрелку) и задержите на несколько секунд. Появится небольшое окошко с характеристикой файла или папки. Как видно на картинке, в этой характеристике указан размер:

Если при наведении на файл или папку ничего не появляется, то нажмите правую кнопку мыши на этом файле или папке. Из открывшегося списка выберите пункт «Свойства». Откроется окошко, в котором будет указан размер этого файла или папки.

А теперь потренируемся определять размер:

Задачка:

У нас имеется файл размером 30 Мб. Сможем ли мы записать его на диск? Флешку размером 1 Гб?

Решение:

На CD диск помещается 700 Мб. Наш файл занимает размер 30 Мб. 700 Мб больше, чем 30 Мб. Вывод: файл поместится на CD диск.

На DVD диск помещается 4,7 Гб. Один Гигабайт равняется 1024 Мегабайт. То есть на один DVD диск помещается около 5000 Мб. А уж 5000 Мб намного больше, чем 30 Мб. Вывод: на DVD диск наш файл поместится.

Нам дана флешка размером 1 Гб. В одном Гб содержится 1024 Мб. 1024 больше, чем 30. Вывод: на флешку 1 Гб файл поместится.

Вы наверняка слышали такие выражения, как «моя игрушка слишком много весит», «легкий файл », тяжелая папка». Неужели папки и файлы можно взвесить? И в каких единицах их тогда взвешивают? Да, как это не странно звучит, но файлы и папки тоже имеют свой вес, или правильнее - объем. Если бы они ничего не весили, то нам не надо было бы жесткие диски, и освобождать место для другой информации.

Что такое размер файла и папки

Даже информацию можно измерить. Для этого в компьютерной терминологии приняты свои единицы измерения: байты, килобайты, мегабайты, гигабайты, терабайты и так далее. Вся компьютерная информация записывается при помощи 0 (нуля) и 1 (единицы). Ноль и единица на компьютерном языке – это 1 бит. А группа из восьми битов, называется байтом. Подробнее читайте.

Основные единицы хранения информации:

1 байт = 8 битов

1 Килобайт (Кб) = 1024 байта

1 Мегабайт (Мб) = 1024 килобайта

Так как компьютер работает в двоичной системе (1 и 0), то ему гораздо удобнее разбивать информацию именно так. Цифра 1024 это килобайт, а один килобайт в двоичной системе счисления это 2 10 = 1024. Мы с вами пользуемся десятичной системой счисления, поэтому не привычно оперировать такими числами.

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

Любой носитель информации, такие как: жесткий диск, дискета, флешка, карта памяти и CD/DVD-диски имеют свой объем, больше которого, вы не сможете на него записать.

Как узнать, сколько весит файл или папка

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


Если у папки или файла слишком большой объем, то таким способом вы не узнаете информацию о его (её) размере. В таком случае необходимо щелкнуть по папке или файлу правой кнопкой мыши, выбрать в выпадающем меню Свойства (в самом низу), и посмотреть размер в новом окне на вкладке Общие .

Если говорить об информации в целом, то измеряется она в БАЙТАХ. Измерение в этих единицах началось с далёкого 1956 года. Тогда этой величины вполне хватало. Чтоб было понятней, о какой величине идёт речь, скажу Вам, что 1 байт = 1 символ. С развитием технологий увеличивался и объем информации, и измерять большой объем информации в БАЙТАХ стало не удобно. Тогда появились приставки КИЛО-БАЙТ (КБ), МЕГА-БАЙТ (МБ), ГИГА-БАЙТ (ГБ), ТЕРА-БАЙТ (ТБ) и т.д.

Для понимания, на сколько большие или маленькие эти величины, приведу такое сравнение:
- 1КБ (один килобайт) = 1024 байта, и это объем информации приблизительно в один печатный лист А4-го формата;

1МБ (один мегабайт) = 1024 килобайта, и это объем информации уже приличного томика страниц на 600-700!

1ГБ (один гигабайт) = 1024 мегабайт, и это уже целая библиотека из 1024 книг по 600 страниц!

1ТБ (один терабайт) = 1024 гигабайта, этот объем информации сравним со средней Европейской библиотекой, где содержится около 8 миллионов книг. Для примера, в Российской государственной библиотеке находится около 43 миллионов единиц.

Теперь сравним объем и вид информации относительно носителей, на которые эту информацию можно записать.

Дискета емкостью 1,44МБ. Когда-то дискета была основным доступным носителем цифровой информации , т.к. записать на неё можно было действительно много чего. Теперь же дискеты используют в основном бухгалтера для хранения электронных ключей и подписей. Причина банальна – на дискете мало места для хранения современной информации . На дискету можно записать одну, две фотографии, сделанных на мобильном телефоне с 3х мегапиксельной камерой; пять, десять Word, Excel документов.

Флешка емкостью 1ГБ. Самый удобный на сегодняшний момент носитель информации. Емкость флешки 1ГБ я взял для кратности счёта, а вообще на момент написания статьи есть и 64ГБ флешки!
Что же можно записать на флешку емкостью 1ГБ: один фильм, относительно неплохого качества; около 200 музыкальных файлов в формате.mp3; около 200 фотографий хорошего качества ; множество документов и программ небольшого размера.

CD диск емкостью 700МБ. На CD диск можно записать: один фильм в формате.avi, в относительно хорошем качестве; около 150 музыкальных файлов в формате.mp3; около 150 фотографий хорошего качества; множество документов и программ небольшого размера.

DVD диск емкостью 4,7ГБ. На DVD диск можно записать: один фильм в формате DVD или HDTV; 4-5 фильмов в формате.avi хорошего качества; около 1200 музыкальных файлов в формате.mp3; около 1000 фотографий хорошего качества; оооочень много документов и программ.

Винчестер емкостью 120ГБ. Тут, чтобы не расписывать до документов, сравню с количеством фильмов, которые можно записать на такой винчестер. Так вот, на винчестер емкостью 120 ГБ можно записать 25 фильмов в DVD или HDTV качестве!

Теперь давайте по очереди разбираться, как определить размер диска, файла или папки.
В Windows определить размер файла, папки или диска можно в ПРОВОДНИКЕ. Запустить «Проводник» можно кликнув ДВА раза ЛЕВОЙ кнопкой мыши по ярлыку «Мой компьютер» на рабочем столе или с помощью комбинации клавиш «Win+E».

Если Вы, например, хотите узнать, сколько свободного места осталось на диске, в частности на флешке, то кликаете ПРАВОЙ кнопкой мыши по изображению съемного диска, обычно он подписан как «Съемный диск (F:)» или «Название флешки (F:)», как на рисунке:

Так вот, кликаете ПРАВОЙ кнопкой мыши по изображению съемного диска – флешки и выбираете в открывшемся меню пункт «Свойства», в самом низу. После этого открывается окно:


Тут видно сколько занято (выделено синим), сколько свободно (выделено розовым) и сколько всего места на диске.

Таким образом, можно узнать остаток свободного места не только на флешке, но и на любом съемном или логическом диске винчестера.

Схема определения размера файла или папки такая же, как и с диском. Т.е. находите на диске нужный файл или папку, кликаете на нем (-ней) ПРАВОЙ кнопкой мыши и смотрите «Свойства».


Там будет вся необходимая информация.


Если Вы хотите узнать размер группы файлов или папок, то их надо выделить и проделать те же операции, т.е. кликнуть ПРАВОЙ кнопкой мыши по одному из выделенных файлов или папок, выбрать «Свойства» и посмотреть размер.

Да, вторая часть урока не совсем попадает в рубрику «Компьютерные азы», но тем не менее. Если у вас возникнут вопросы, Вы всегда сможете их задать в комментариях.

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

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

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

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

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

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

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

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

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

// аргументов функции будет путь к файлу
function get_filesize($file)
{
// идем файл
if(!file_exists($file)) return "Файл не найден";
// теперь определяем размер файла в несколько шагов
$filesize = filesize($file);
// Если размер больше 1 Кб
if($filesize > 1024)
{

// Если размер файла больше Килобайта
// то лучше отобразить его в Мегабайтах. Пересчитываем в Мб
if($filesize > 1024)
{

// А уж если файл больше 1 Мегабайта, то проверяем
// Не больше ли он 1 Гигабайта
if($filesize > 1024)
{
$filesize = ($filesize/1024);

Return $filesize." ГБ";
}
else
{

return $filesize." MБ";
}
}
else
{
$filesize = round($filesize, 1);
return $filesize." Кб";
}
}
else
{
$filesize = round($filesize, 1);
return $filesize." байт";
}
}
?>
Функцию мы создали. Далее остаётся её применить.

Код PHP

include_once "function/function.php"; // подключаем файл с функцией

// вставляете путь или переменную с путём для обработки его функцией
$size = get_filesize ("images/photo.jpg");
echo "Размер файла: ".$size." "; // выводим результат с размером
?>
Всё готово! Пользуйтесь на здоровье!
Спасибо за внимание! И удачи в работе!

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

Любой файл или папка с файлами занимает на локальных дисках определенный объём памяти. То есть у всех файлов и папок есть объем, другими словами, вес или размер.

Мы со школы знаем такие понятия, как граммы и килограммы, метры и километры. В компьютерном мире тоже есть свои единицы измерения. В них измеряются файлы и папки. Опираясь на «сленг» продвинутых пользователей, мы будем определять сколько «весит» тот или иной файл или папка. Основными единицами измерения являются: байты, килобайты, мегабайты, гигабайты, ну можно ещё и терабайты.

1 КБ = 1024 байт

1 МБ = 1024 КБ

1 ГБ = 1024 МБ

Расшифруем:

В одном КБ (килобайте) находятся 1024 байта.
В одном МБ (мегабайте) находятся 1024 КБ (килобайта).
В одном ГБ (гигабайте) находятся 1024 МБ (мегабайта).

Как узнать размер файла или папки ?

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

Если при наведении на файл или папку ничего не появляется, то нажмите правую кнопку мыши на этом файле или папке. Из открывшегося контекстного меню выберите пункт «Свойства».

Откроется окошко, в котором будет указан размер этого файла или папки.

Для чего же нам нужно знать размеры?! Например, для того, чтобы определить, сможем ли мы записать файл или папку на диск (дискету, флешку)или сколько места осталось на локальных дисках.

Для того чтобы мы смогли это определить, нам нужно знать, сколько информации помещается на диск (дискету, флешку):

  • Дискета — 1,44 МБ (подходит для записи текстовых файлов)
  • CD диск — 700 МБ (подходит для записи музыки, небольших видеороликов и программ)
  • DVD диск — от 4 ГБ (подходит для записи чего угодно). Стандартный объем DVD диска равен 4,7 Гб. Еще бывают двусторонние DVD диски. Это означает, что запись может быть с двух сторон - и с одной, и со второй. У таких дисков объем 9,4 Гб. Также существуют двухслойные диски, но они менее распространены. У таких дисков объемы следующие: 1-сторонние 2-слойные - 8,5 Гб; 2-сторонние 2-слойные - 17,1 Гб.
  • Флешки — от 1ГБ (подходит для записи чего угодно)

Это все, о чем я хотел рассказать в данной статье.

Для измерения длины есть такие единицы, как миллиметр, сантиметр, метр, километр. Известно, что масса измеряется в граммах, килограммах, центнерах и тоннах. Бег времени выражается в секундах, минутах, часах, днях, месяцах, годах, веках. Компьютер работает с информацией и для измерения ее объема также имеются соответствующие единицы измерения.

Бит и байт – минимальные единицы измерения информации

Мы уже знаем, что компьютер воспринимает всю информацию .

Бит – это минимальная единица измерения информации, соответствующая одной двоичной цифре («0» или «1»).

Бит – это только 0 («ноль») или только 1 («единичка»). С помощью одного бита можно записать два состояния: 0 (ноль) или 1 (один). Бит – это минимальная ячейка памяти, меньше не бывает. В этой ячейке может храниться либо нолик, либо единичка.

Байт состоит из восьми бит. Используя один байт, можно закодировать один символ из 256 возможных (256 = 2 8). Таким образом, один байт равен одному символу, то есть 8 битам:

1 символ = 8 битам = 1 байту.

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

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

Таблица байтов:

1 байт = 8 бит

1 Кб (1 Килобайт ) = 2 10 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 10 3 байт)

1 Мб (1 Мегабайт ) = 2 20 байт = 1024 килобайт (примерно 1 миллион байт – 10 6 байт)

1 Гб (1 Гигабайт ) = 2 30 байт = 1024 мегабайт (примерно 1 миллиард байт – 10 9 байт)

1 Тб (1 Терабайт ) = 2 40 байт = 1024 гигабайт (примерно 10 12 байт). Терабайт иногда называют тонна .

1 Пб (1 Петабайт ) = 2 50 байт = 1024 терабайт (примерно 10 15 байт).

1 Эксабайт = 2 60 байт = 1024 петабайт (примерно 10 18 байт).

1 Зеттабайт = 2 70 байт = 1024 эксабайт (примерно 10 21 байт).

1 Йоттабайт = 2 80 байт = 1024 зеттабайт (примерно 10 24 байт).

В приведенной выше таблице степени двойки (2 10 , 2 20 , 2 30 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 10 3 , 10 6 , 10 9 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 2 10 = 1024 байта представляет точное значение килобайта, а 10 3 = 1000 байт является приблизительным значением килобайта.

Такое приближение (или округление) вполне допустимо и является общепринятым.

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

1 Kb ~ 10 3 b = 10*10*10 b= 1000 b – килобайт

1 Mb ~ 10 6 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

1 Gb ~ 10 9 b – гигабайт

1 Tb ~ 10 12 b – терабайт

1 Pb ~ 10 15 b – петабайт

1 Eb ~ 10 18 b – эксабайт

1 Zb ~ 10 21 b – зеттабайт

1 Yb ~ 10 24 b – йоттабайт

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

Продолжение следует…

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

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 10 27 , 10 30 , 10 33 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.


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

Есть удобный «терабайтник» – внешний жесткий диск, который подключается через порт USB к компьютеру. На него можно записать терабайт информации. Особенно удобно для ноутбуков (где смена жесткого диска бывает проблематична) и для резервного копирования информации. Лучше заранее делать резервные копии информации, а не после того, как все пропало.

Флешки бывают 1 Гб, 2 Гб, 4 Гб, 8 Гб, 16 Гб, 32 Гб, 64 Гб и даже 1 терабайт.

Прежде всего скажем, что речь здесь пойдет о файловых системах FAT и NTFS, как наиболее распространенных, и ничего не будет сказано о файловых системах, используемых в не-Windows системах, поскольку такие системы лежат вне сферы интересов автора. А теперь – к делу.

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

Проведите эксперимент. Возьмите любой исполняемый файл и выполните его копирование командой
copy что-то.exe что-то-другое.exe

Если вы раньше с этим сталкивались, то уже знаете, что результирующий файл получится намного короче исходного и не будет копией. Причина простая: программа copy, запущенная без параметра /b, копирует файл до тех пор, пока не встретит байт с кодом 27h, этот символ называется «конец файла».

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

В файловых системах, использующих кластеры, а FAT и NTFS относятся именно к таким ФС, есть еще третий размер – размер файла на диске, то есть суммарный размер кластеров, отведенных этому файлу. В файловых системах FAT этот размер больше размера собственно файла или равен ему. Разница между размерами, если она есть, – так называемый хвост файла – это напрасно пропадающее место на диске, плата за размещение файлов по кластерам, а не встык друг за другом, хотя файловые системы с таким размещением файлов тоже существуют.

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

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

Максимальный размер такого файла зависит от размера записи и составляет примерно 600 байтов для записи мелкого размера (1 Кб) и 3600 – для записи крупного размера (4 Кб). Следует, впрочем, отметить, что до недавнего времени Windows показывала размер такого файла на диске равным одному кластеру, хотя фактически ни одного кластера файлу не выделено.

Если файл сжат, то его размер на диске может быть заметно меньше собственно длины файла (количества данных в нем).

Дополнительно усложняют картину так называемые разреженные файлы. В них полезные данные содержаться только в определенных участках файла, а остальная часть файла не используется вовсе. Возьмем в качестве примера файл журнала изменений \$Extend\$UsnJrnl, имеющийся почти на каждом компьютере (не пытайтесь увидеть его в проводнике или других диспетчерах файлов, не получится).


Он может иметь длину несколько гигабайт, но значимых данных содержит при этом обычно только 32 мегабайта в самом конце. А остальная часть вообще никаких данных не содержит, места на диске не занимает, и при попытке прочитать данные из этой части система выдаст набор нулей, даже не обращаясь к диску.
Если у читателя возникнет желание поэкспериментировать с разреженными файлами, такой файл можно создать с помощью команды fsutil sparse. А на досуге можно обдумать, какова же настоящая длина файла, если система записала в соответствующую графу число 4 Гб, а реальных данных в файле только 32 Мб и на диске он занимает тоже 32 Мб.

И, наконец, расскажем еще об одной длине: длине действительных данных (valid data). Эта длина и устанавливающие ее функции представляют интерес почти исключительно для программистов, тем не менее изредка с ней могут столкнуться и обычные пользователи.

В файловых системах FAT такого понятия не существует, и функции, которые используют эту величину, записывают в тело файла на соответствующих местах нули. В NTFS эта длина является характеристикой файла.

Попробуем пояснить, о чем идет речь, на примере. Возьмите флешку (флешка используется для наглядности, поскольку она медленнее жесткого диска работает с большими объемами данных) размером от гигабайта, отформатированную в FAT32, и создайте на ней большой файл командой
fsutil file createnew k:\пробный.txt 900000000

Если буква, присвоенная флешке, отличается от К, то исправьте команду соответствующим образом.
Вы увидите, что процедура создания файла окажется довольно продолжительной, полминуты или даже больше (хотя сообщение «файл создан» появится сразу же, появления приглашения командной строки придется подождать). Это совсем не удивительно, ведь в описании команды () сказано, что создаваемый файл состоит из нулей. А файл у нас получился 858 мегабайт, так что его запись и должна занять не такое уж малое время.

Теперь отформатируйте флешку в NTFS, для чистоты эксперимента лучше взять ту же самую, и повторите создание файла. На этот раз операция пройдет практически моментально. Записывать нули в тело файла уже не надо, достаточно распределить место под файл и установить для него длину действительных данных равной нулю. В теле файла останется «мусор», который был записан в этих секторах, но при чтении данных обращения к этим данным не произойдет – обнаружив, что длина действительных данных равна нулю, все, что дальше этого нуля, система читать не станет – ведь эти данные недействительны. Их можно сделать действительными, если изменить значение длины действительных данных.

Рассмотрим это на примере. Создайте новый файл на одном из рабочих дисков, отформатированном в NTFS. Сотни мегабайт совершенно не обязательны, десятка-другого килобайт будет вполне достаточно:
fsutil file createnew C:\пробный.txt 10000

Теперь откройте его с помощью любого просмотрщика файлов, например FAR.


Как видим, в файле действительно нули. Но если посмотреть на этот файл с помощью какого-либо редактора дисков, обращающегося к секторам напрямую, например dmde, то картина будет другая.

Если мы откроем том С как логическое устройство и посмотрим на содержимое файла, то увидим те же самые нули.


Но если открыть диск как физическое устройство, то в том же самом секторе (обратите внимание на номера LBA – разница в 63 возникла из-за того, что начало раздела сдвинуто относительно начала диска) увидим данные, которые ранее были записаны в какой-то позже удаленный файл.


И если мы увеличим длину действительных данных, то увидим эти данные в файле. Установим эту длину равной 300 байт:

fsutil file setvaliddata C:\пробный.txt 300

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

Теперь снова посмотри на содержимое файла. Заметьте, что никаких данных мы в него не записывали!


Чисто случайно получилось, что в этом файле довольно много осмысленного текста, что делает картину более наглядной. 300 десятичных байтов – это 12c шестнадцатиричных, и как раз на этом байте обрывается текст и начинаются нули. Если сдвинуть границу действительных данных еще дальше, то «проявятся» и следующие строки.

Подведем итоги

Имеется две физических длины файла – это размер файла, записанный в файловой системе и место, занимаемое на диске. Также имеется две логических длины файла – это признак конца файла (байт EOF – 27h) и длина действительных данных. Как составную часть логической длины можно рассматривать и пустые области в разреженных файлах – вспомните \$Extend\$UsnJrnl, где большой массив отсутствующих данных завершается тридцатью двумя мегабайтами действительных.

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



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

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

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

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

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

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

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

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

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

// аргументов функции будет путь к файлу
function get_filesize($file)
{
// идем файл
if(!file_exists($file)) return "Файл не найден";
// теперь определяем размер файла в несколько шагов
$filesize = filesize($file);
// Если размер больше 1 Кб
if($filesize > 1024)
{

// Если размер файла больше Килобайта
// то лучше отобразить его в Мегабайтах. Пересчитываем в Мб
if($filesize > 1024)
{
$filesize = ($filesize/1024);
// А уж если файл больше 1 Мегабайта, то проверяем
// Не больше ли он 1 Гигабайта
if($filesize > 1024)
{
$filesize = ($filesize/1024);

return $filesize." ГБ";
}
else
{
$filesize = round($filesize, 1);
return $filesize." MБ";
}
}
else
{
$filesize = round($filesize, 1);
return $filesize." Кб";
}
}
else
{
$filesize = round($filesize, 1);
return $filesize." байт";
}
}
?>
Функцию мы создали. Далее остаётся её применить.

Код PHP

include_once "function/function.php"; // подключаем файл с функцией

// вставляете путь или переменную с путём для обработки его функцией
$size = get_filesize ("images/photo.jpg");
echo "Размер файла: ".$size.""; // выводим результат с размером
?>
Всё готово! Пользуйтесь на здоровье!
Спасибо за внимание! И удачи в работе!



Понравилась статья? Поделитесь ей
Наверх