Работа с Файлами в PHP — Получение Свойств Файла

1357011892_old-edit-find

Вы должно быть хорошо знакомы с такими базами данных, как MySQL и Access, которые являются все более распространяемыми средствами хранения информации. Но информация также хранится в файлах, таких как Word документы, журналы событий, таблицы, изображения, и прочее. В базах данных обычно предусмотрен специальный язык запросов для извлечения информации, а файлы воспринимаются, как поток текста.

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

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

PHP предоставляет целый набор функций для работы с файлами и в этой серии статей я покажу некоторые из них для вас.

Свойства файлов

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

Размер файла

Функция filesize() возвращает размер файла в байтах.

<?php
$f = "C:\\Windows\\win.ini";
$size = filesize($f);
echo $f . " is " . $size . " bytes.";

Результат:

C:\Windows\win.ini is 510 bytes.

Здесь подчеркнут один очень важный момент при работе с файлами в Windows; Обратный слэш — символ экранирования в строке, для того чтобы он отображался корректно его нужно экранировать таким образом: «\\».

Если файл не существует, то функция filesize() возвратит значение false и выдаст E_WARNING, следовательно лучше сначала проверь существует ли файл с помощью функции file_exists():

<?php
$f = "C:\\Windows\\win.ini";
if (file_exists($f))  {
    $size = filesize($f);
    echo $f . " is " . $size . " bytes.";
}
else  {
    echo $f . " does not exist.";
}

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

История Файла

Для того чтобы получить историю файла используются следующие функции: fileatime()filemtime() и filectime().

<?php
$dateFormat = "D d M Y g:i A";

$atime = fileatime($f);
$mtime = filemtime($f);
$ctime = filectime($f);

echo $f . " was accessed on " . date($dateFormat, $atime) . ".<br>";
echo $f . " was modified on " . date($dateFormat, $mtime) . ".<br>";
echo $f . " was changed on " . date($dateFormat, $ctime) . ".";

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

Функция date() была использована для форматирования даты. Советую почитать  документацию для функции date() чтобы узнать больше опций форматирования.

Доступ к Файлу

Перед работой с файлом нужно проверить можно ли его читать и писать.  Для этого вам понадобятся функции is_readable() и is_writeable():

<?php
echo $f . (is_readable($f) ? " is" : " is not") . " readable.<br>";
echo $f . (is_writable($f) ? " is" : " is not") . " writeable.";

Обе функции возвращают Boolean значение. С помощью ветвления вы можете отобразить можно ли читать/писать файл.

C:\Windows\win.ini is readable.
C:\Windows\win.ini is not writeable.

Файл или Нет?

Для полной уверенности что вы имеете дело с файлом вы можете использовать функцию is_file().is_dir() Проверяет является ли это папкой.

<?php
echo $f . (is_file($f) ? " is" : " is not") . " a file.<br>";
echo $f . (is_dir($f) ? " is" : " is not") . " a directory.";

Пример результата:

C:\Windows\win.ini is a file.
C:\Windows\win.ini is not a directory.

Источник

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

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

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>