Функции доступа к общей информации о файле и файловой системе

Функции доступа к общей информации о файле и файловой системе позволяют:

· получить сведения об объемах памяти в файловой системе;

· получить характеристики файла;

· проверить некоторые характеристики файла.

Сведения об объемах памяти в файловой системе можно получить с помощью функций float disk_free_space() и float disk_total_space().

Функция

float disk_free_space(string directory)

определяет, в какой файловой системе находится каталог или диск directory, и возвращает объем (в байтах) свободного места в файловой сис­теме или разделе диска.

Функция

float disk_total_space(string directory)

определяет, в какой файловой системе находится каталог или диск directory, и возвращает общий объем дисковой памяти (в байтах) в файловой сис­теме или разделе диска.

Пример 4.6.135. Использование функций disk_free_space()и disk_total_space():

Следующий фрагмент программы определяет общий объем и объем свободного места на диске D и выводит эти характеристики:

$totalSpace = disk_total_space("D:");

$freeSpace = disk_free_space("D:");

echo "Space on disk D:",

"\n Total space: $totalSpace",

"\n Free space: $freeSpace";

Вывод этого фрагмента имеет следующий вид:

Получить характеристики файла можно с помощью функций realpath(), basename(), pathinfo() и stat().

Функция

string realpath(string path)

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

Функция

string basename(string path)

определяет в полном имени файла path его имя в каталоге и возвращает выделенное имя (строка после последнего сим­вола "/").

Функция

mixed pathinfo(string filename)

возвращает массив с ключами dirname, filename, basename и extension, содержащий в качестве значений соответственно имя каталога, имя файла с расширением, имя файла без расширения и расширение файла.

Пример 4.6.136. Использование функций realpath(), basename() и pathinfo():

Выполнение следующего фрагмента программы

// Переход в каталог "d:/Uploads/"

chdir("d:/Uploads/");

// Получение абсолютного пути к файлу eagle.png

$imageDirRealPath=realpath("images/eagle.png");

// Получение базового имени файла eagle.png

$imageBaseName=basename($imageDirRealPath);

// Получение компонент пути к файлу eagle.png

$pathArray = pathinfo($imageDirRealPath);

// Вывод характеристик файла eagle.png

echo "Properties of 'eagle.png' file:",

"\n Real path='$imageDirRealPath'",

"\n Base name='$imageBaseName'",

"\n File info:",

"\n dirname=".$pathArray['dirname'],

"\n basename=".$pathArray['basename'],

"\n filename=".$pathArray['filename'],

"\n extension=".$pathArray['extension'];

выводит на экран строки:

Функция

array stat(string filename)

возвращает ассоциативный массив из 13 элементов с информацией о файле filename:

· 'dev' – номер устройства;

· 'ino' – номер индексного дескриптора;

· 'mode' – права доступа к файлу;

· 'nlink' – число жестких (hard) ссылок на данный файл;

· 'uid' – идентификатор пользователя;

· 'gid' – идентификатор группы;

· 'rdev' – тип устройства;

· 'size' – размер файла в байтах;

· 'atime' – время последнего обращения к файлу;

· 'mtime' – время последней модификации файла;

· 'ctime' – время последнего изменения параметров доступа к файлу;

· 'blksize'– размер блока в файловой системе;

· 'blocks' – число выделенных блоков для файла.

Если информация о файле недоступна, возвращается значение false.

В качестве значений времени в элементах массива задаются метки времени (см. 4.6.18).

Большинство из приведенных характеристик файла относится к операционной системе Unix. Реально в Windows можно использовать только характеристики 7-10. Эти же характеристики можно получить с помощью следующих функций:

· int filesize(string filename) – возвращает размер файла в байтах;

· int fileatime(string filename) – возвращает время последнего обращения к файлу;

· int filemtime(string filename) – возвращает время последней модификации файла;

· int filectime(string filename) – возвращает время последнего изменения параметров доступа к файлу.

Пример 4.6.137. Использование функций filesize() и filemtime():

Следующий фрагмент программы выводит для файлов Word (с расширением.doc) в каталоге "d:/Uploads/" размер и дату последней модификации файла:

// Задание имени каталога

$UploadsDir = "d:/Uploads/";

// Сканирование каталога

$UploadsArray = scandir($UploadsDir);

// Начальное значение индекса файла Word

$j = 0;

// Вывод заголовка

print "Word files in directory \"$UploadsDir\":";

// Вывод имен и характеристик файлов Word в цикле

for($i=0; $i < count($UploadsArray); $i++)

{

// Получение имени текущего элемента

$elementName = $UploadsArray[$i];

// Проверка расширения файла

if(preg_match("/\.doc$/", $elementName) == 1)

{

// Увеличение значения индекса файла Word

$j++;

// Получение размера файла

$docFileSize = filesize($UploadsDir.$elementName);

// Получение времени последней

// модификации файла

$docFileMtime =

filemtime($UploadsDir.$elementName);

// Получение массива даты и времени

$dateTime = getDate($docFileMtime);

// Вывод характеристик файла

echo "\n $j. $elementName ",

"Size: $docFileSize bytes Last modification: ",

$dateTime['mday']." ". $dateTime['month'].

" ".$dateTime['year'];

}

}

Вывод этого фрагмента имеет следующий вид:

Для проверки некоторых характеристик файла можно использовать следующие функции:

· bool file_exists(string name) – возвращает true, если файл или каталог name существует и false – в противном случае;

· bool is_executable(string filename) – возвращает true, если файл filename выполняемый (является программой) и false – в противном случае;

· bool is_file(string filename) – возвращает true, если файл filename – обычный файл (не каталог) и false – в противном случае;

· bool is_readable(string filename) – возвращает true, если файл filename можно читать и false – в противном случае;

· bool is_writable(string filename) – возвращает true, если в файл filename можно писать и false – в противном случае;

· bool is_uploaded_file(string filename) – возвращает значение true, если файл filename загружен с Web-браузера, в противном случае возвращает false.

Пример 4.6.138. Использование функций is_file(), is_executable(), is_readable() и is_writable():

Следующий фрагмент программы выводит для файлов в каталоге "d:/Uploads/" возможность чтения, записи и выполнения:

// Задание имени каталога

$UploadsDir = "d:/Uploads/";

// Сканирование каталога

$UploadsArray = scandir($UploadsDir);

// Начальное значение индекса файла

$j = 0;

// Вывод заголовка

print "Files accesses in directory \"$UploadsDir\":";

// Вывод имен и характеристик файлов Word в цикле

for($i=0; $i < count($UploadsArray); $i++)

{

// Получение имени текущего элемента

$elementName = $UploadsArray[$i];

// Проверка расширения файла

if(is_file($UploadsDir.$elementName))

{

// Увеличение значения индекса файла

$j++;

// Получение возможности чтения файла

$fileIsReadable =

is_readable($UploadsDir.$elementName)?"yes":"no";

// Получение возможности записи в файл

$fileIsWritable =

is_writable($UploadsDir.$elementName)?"yes":"no";

// Получение возможности выполнения файла

$fileIsExecutable =

is_executable($UploadsDir.$elementName)?

"yes":"no";

// Вывод характеристик файла

echo "\n $j. $elementName ",

"Readable: $fileIsReadable ".

"Writable: $fileIsWritable",

" Executable: $fileIsExecutable";

}

}

Вывод этого фрагмента имеет следующий вид:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: