Главная / Веб-программирование / Файловая система PHP

Файловая система PHP

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

Открытие файла с помощью функции PHP fopen()

Для работы с файлом сначала нужно его открыть функцией fopen(). Ее синтаксис:

fopen(имя_файла, режим)

Первый параметр, передаваемый в fopen(), это имя файла, который нужно открыть, а второй — режим открытия. Например:

<?php
$handle = fopen("data.txt", "r");
?>

Файл может быть открыт в одном из следующих режимов:

РежимЧто он делаетRОткрывает файл только для чтения.r+Открывает файл для чтения и записи.WОткрывает файл только для записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.w+Открывает файл для чтения и записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.AОткрывает файл только для записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, PHP попытается его создать.a+Открывает файл для чтения и записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, он будет создан. Можно использовать вместо PHP fread ()XОткрывает файл только для записи. Возвращает значение FALSE и генерирует ошибку, если файл уже существует. Если файл не существует, PHP попытается его создать.x+Открывает файл для чтения и записи; в противном случае имеет такое же поведение, как «x».

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

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Пытаемся открыть файл
$handle = fopen($file, "r");
} else{
echo "ERROR: File does not exist.";
}
?>

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

Закрытие файла

Как только вы закончите чтение файла с помощью PHP fread, его нужно закрыть. Для этого используется функция fclose():

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Открываем файл для чтения
$handle = fopen($file, "r") or die("ERROR: Cannot open the file.");

/* Некоторый выполняемый код */

// Обработка закрытия файла
fclose($handle);
} else{
echo "ERROR: File does not exist.";
}
?>

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

Чтение из файлов с помощью функции PHP fread()

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

Чтение фиксированного количества символов

Функция PHP fread() может использоваться для чтения заданного количества символов из файла. Базовый синтаксис функции:

fread(дескриптор_файла, длина_в_байтах)

Она принимает два параметра — дескриптор файла и количество байтов, которые должны быть считаны. В следующем примере мы считываем 20 байтов из файла data.txt, включая пробелы. Предположим, data.txt содержит абзац текста «The quick brown fox jumps over the lazy dog«:

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Открываем файл для чтения
$handle = fopen($file, "r") or die("ERROR: Cannot open the file.");

// Считываем фиксированное количество байтов из файла
$content = fread($handle, "20");

// Обработка закрытия файла
fclose($handle);

// Выводим содержимое файла
echo $content;
} else{
echo "ERROR: File does not exist.";
}
?>

Приведенный выше пример даст следующий результат:

The quick brown fox

Чтение всего содержимого файла

Функция fread() может использоваться в связке с функцией filesize() для полного считывания всего файла. filesize() возвращает размер файла в байтах. PHP fread пример:

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Открываем файл для чтения
$handle = fopen($file, "r") or die("ERROR: Cannot open the file.");

// Считываем весь файл
$content = fread($handle, filesize($file));

// Обработка закрытия файла
fclose($handle);

// Выводим содержимое файла
echo $content;
} else{
echo "ERROR: File does not exist.";
}
?>

Приведенный выше пример даст следующий результат:

The quick brown fox jumps over the lazy dog.

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

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Считывает и выводит весь файл
readfile($file) or die("ERROR: Cannot open the file.");
} else{
echo "ERROR: File does not exist.";
}
?>

Приведенный выше пример даст следующий результат:

The quick brown fox jumps over the lazy dog.

Другой способ прочитать все содержимое файла, не открывая его — это функция file_get_contents(). Она принимает имя и путь к файлу и считывает весь файл в строковую переменную. Пример без PHP fread:

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Считываем весь файл в строку
$content = file_get_contents($file) or die("ERROR: Cannot open the file.");

// Выводим содержимое файла
echo $content;
} else{
echo "ERROR: File does not exist.";
}
?>

Еще один способ считывания всех данных из файла — это функция file(). Она работает аналогично функции file_get_contents(), но возвращает содержимое как массив строк, а не одну строку. Каждый элемент возвращаемого массива соответствует строке в файле.

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

<?php
$file = "data.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Считываем весь файл в массив
$arr = file($file) or die("ERROR: Cannot open the file.");
foreach($arr as $line){
echo $line;
}
} else{
echo "ERROR: File does not exist.";
}
?>

Запись файлов с использованием функции PHP fwrite()

Можно записать данные в файл с помощью функции PHP fwrite(). Ее синтаксис:

fwrite(дескриптор_файла, строка)

Функция fwrite() принимает два параметра: дескриптор файла и строку данных, которые должны быть записаны:

<?php
$file = "note.txt";

// Строка данных, которую нужно записать
$data = "The quick brown fox jumps over the lazy dog.";

// Открываем файл для записи
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");

// Записываем данные в файл
fwrite($handle, $data) or die ("ERROR: Cannot write the file.");

// Обработка закрытия файла
fclose($handle);

echo "Data written to the file successfully.";
?>

В приведенном выше примере, если файл note.txt не существует, PHP автоматически создаст его и запишет данные. Но если note.txt уже существует, PHP перед записью новых данных стирает содержимое этого файла. Если вы просто хотите добавить файл и сохранить существующее содержимое, используйте режим a вместо w.

Альтернативный способ – file_put_contents(). Это аналог функции file_get_contents(), который предоставляет простой способ записи данных в файл без необходимости его открытия. Эта функция принимает имя и путь к файлу с данными, которые должны быть записаны. Например (похожий на PHP fread пример):

<?php
$file = "note.txt";

// Строка данных, которые нужно записать
$data = "The quick brown fox jumps over the lazy dog.";

// Записываем данные в файл
file_put_contents($file, $data) or die("ERROR: Cannot write the file.");

echo "Data written to the file successfully.";
?>

Если файл, указанный в функции file_put_contents(), уже существует, PHP по умолчанию перезапишет его. Если вы хотите сохранить содержимое файла, можно передать специальный флаг FILE_APPEND в качестве третьего параметра file_put_contents(). Тогда функция добавит новые данные в файл, а не перепишет их. Пример:

<?php
$file = "note.txt";

// Строка данных, которую нужно записать
$data = "The quick brown fox jumps over the lazy dog.";

// Записываем данные в файл
file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file.");

echo "Data written to the file successfully.";
?>

Переименование файлов с помощью функции PHP rename()

После прочтения с помощью php fread() файл можно переименовать файл или каталог, используя функцию PHP rename(), например:

<?php
$file = "file.txt";

// Проверяем наличие файда
if(file_exists($file)){
// Пытаемся переименовать файл
if(rename($file, "newfile.txt")){
echo "File renamed successfully.";
} else{
echo "ERROR: File cannot be renamed.";
}
} else{
echo "ERROR: File does not exist.";
}
?>

Удаление файлов с помощью функции PHP unlink()

Можно удалять файлы или папки с помощью функции PHP unlink(), например:

<?php
$file = "note.txt";

// Проверяем наличие файла
if(file_exists($file)){
// Попытка переименования файла
if(unlink($file)){
echo "File removed successfully.";
} else{
echo "ERROR: File cannot be removed.";
}
} else{
echo "ERROR: File does not exist.";
}
?>

Функции файловой системы PHP

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

ФункцияОписаниеfgetc()Считывает один символ за раз.fgets()Считывает одну строку за раз.fgetcsv()Считывает строку разделенных запятыми значений.filetype()Возвращает тип файла.feof()Проверяет, достигнут ли конец файла.is_file()Проверяет, является ли файл стандартным файлом.is_dir()Проверяет, является ли файл каталогом.is_executable()Проверяет, является ли файл исполняемым.realpath()Возвращает канонизированный абсолютный путь к файлу.rmdir()Удаляет пустую директорию.

Перевод статьи «PHP File System» дружной командой проекта Сайтостроение от А до Я.

О нас seoexpert

продвижение сайта,seo оптимизация,поисковое продвижение,раскрутка сайтов,поисковая оптимизация,продвижение сайта в гугл,seo раскрутка,продвижение сайтов в яндексе,продвижение сайта в google,продвижение сайтов в топ 10,Оптимизация и продвижение сайтов,услуги продвижения сайта,заказать продвижение,продвижение сайтов в топ,сео раскрутка сайта

Смотрите также

Определение типа данных double в C, C++ и C#

Double – 64-разрядная переменная с плавающей запятой Тип double — это основной тип данных, который ...