Активный
- Тема Автор
- #1
Руководство по чтению, записи и управлению файлами в PHP с примерами кода.
Чтение файла целиком
Запись в файл
Чтение файла построчно
Запись построчно
Проверка существования файла
Копирование и перемещение файлов
Работа с CSV файлами
Работа с JSON файлами
Создание директорий
Чтение директории
Рекурсивный обход директории
Загрузка файлов
Блокировка файлов
Чтение больших файлов
Получение информации о файле
Временные файлы
Архивирование файлов
Работа с файлами - важная часть PHP программирования. Эти примеры покрывают большинство задач по работе с файловой системой.
Чтение файла целиком
Код:
<?php
// file_get_contents - читает весь файл в строку
$content = file_get_contents('data.txt');
echo $content;
// С обработкой ошибок
$content = @file_get_contents('data.txt');
if ($content === false) {
echo "Ошибка чтения файла";
} else {
echo $content;
}
?>
Запись в файл
Код:
<?php
// file_put_contents - записывает данные в файл
$data = "Новая строка данных\n";
file_put_contents('data.txt', $data);
// Добавление в конец файла
file_put_contents('data.txt', $data, FILE_APPEND);
// Создание файла если не существует
file_put_contents('newfile.txt', $data, FILE_APPEND | LOCK_EX);
?>
Чтение файла построчно
Код:
<?php
$file = fopen('data.txt', 'r');
if ($file) {
while (($line = fgets($file)) !== false) {
echo $line;
}
fclose($file);
} else {
echo "Ошибка открытия файла";
}
?>
Запись построчно
Код:
<?php
$file = fopen('output.txt', 'w');
if ($file) {
fwrite($file, "Строка 1\n");
fwrite($file, "Строка 2\n");
fwrite($file, "Строка 3\n");
fclose($file);
}
?>
Проверка существования файла
Код:
<?php
if (file_exists('data.txt')) {
echo "Файл существует";
echo "Размер: " . filesize('data.txt') . " байт";
echo "Последнее изменение: " . date('Y-m-d H:i:s', filemtime('data.txt'));
} else {
echo "Файл не существует";
}
?>
Копирование и перемещение файлов
Код:
<?php
// Копирование
if (copy('source.txt', 'destination.txt')) {
echo "Файл скопирован";
} else {
echo "Ошибка копирования";
}
// Перемещение/переименование
if (rename('oldname.txt', 'newname.txt')) {
echo "Файл переименован";
}
// Удаление
if (unlink('file.txt')) {
echo "Файл удален";
}
?>
Работа с CSV файлами
Код:
<?php
// Чтение CSV
$file = fopen('data.csv', 'r');
while (($row = fgetcsv($file)) !== false) {
print_r($row);
}
fclose($file);
// Запись CSV
$file = fopen('output.csv', 'w');
$data = [
['Имя', 'Возраст', 'Город'],
['Иван', 25, 'Москва'],
['Петр', 30, 'СПб']
];
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
?>
Работа с JSON файлами
Код:
<?php
// Чтение JSON
$json = file_get_contents('data.json');
$data = json_decode($json, true);
// Запись JSON
$data = ['name' => 'Иван', 'age' => 25];
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
file_put_contents('data.json', $json);
?>
Создание директорий
Код:
<?php
// Создание одной директории
if (!file_exists('newdir')) {
mkdir('newdir');
}
// Создание с правами доступа
mkdir('newdir', 0755);
// Рекурсивное создание
mkdir('path/to/directory', 0755, true);
?>
Чтение директории
Код:
<?php
$dir = opendir('.');
while (($file = readdir($dir)) !== false) {
if ($file != '.' && $file != '..') {
echo $file . "\n";
}
}
closedir($dir);
// Современный способ
$files = scandir('.');
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
echo $file . "\n";
}
}
?>
Рекурсивный обход директории
Код:
<?php
function scanDirectory($dir) {
$files = [];
$items = scandir($dir);
foreach ($items as $item) {
if ($item != '.' && $item != '..') {
$path = $dir . '/' . $item;
if (is_dir($path)) {
$files = array_merge($files, scanDirectory($path));
} else {
$files[] = $path;
}
}
}
return $files;
}
$allFiles = scanDirectory('.');
foreach ($allFiles as $file) {
echo $file . "\n";
}
?>
Загрузка файлов
Код:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
$uploadDir = 'uploads/';
$fileName = basename($_FILES['file']['name']);
$targetFile = $uploadDir . $fileName;
// Проверка типа файла
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['file']['type'], $allowedTypes)) {
echo "Недопустимый тип файла";
exit;
}
// Проверка размера (максимум 5MB)
if ($_FILES['file']['size'] > 5000000) {
echo "Файл слишком большой";
exit;
}
if (move_uploaded_file($_FILES['file']['tmp_name'], $targetFile)) {
echo "Файл загружен: " . $fileName;
} else {
echo "Ошибка загрузки";
}
}
?>
Блокировка файлов
Код:
<?php
$file = fopen('data.txt', 'r+');
if (flock($file, LOCK_EX)) {
// Эксклюзивная блокировка
$content = fread($file, filesize('data.txt'));
// Изменение данных
ftruncate($file, 0);
rewind($file);
fwrite($file, $content);
flock($file, LOCK_UN); // Снятие блокировки
}
fclose($file);
?>
Чтение больших файлов
Код:
<?php
function readLargeFile($filename, $chunkSize = 8192) {
$file = fopen($filename, 'r');
if (!$file) {
return false;
}
while (!feof($file)) {
$chunk = fread($file, $chunkSize);
// Обработка чанка
echo $chunk;
}
fclose($file);
return true;
}
readLargeFile('largefile.txt');
?>
Получение информации о файле
Код:
<?php
$file = 'data.txt';
echo "Размер: " . filesize($file) . " байт\n";
echo "Время изменения: " . date('Y-m-d H:i:s', filemtime($file)) . "\n";
echo "Время доступа: " . date('Y-m-d H:i:s', fileatime($file)) . "\n";
echo "Права доступа: " . substr(sprintf('%o', fileperms($file)), -4) . "\n";
echo "Тип: " . filetype($file) . "\n";
echo "MIME тип: " . mime_content_type($file) . "\n";
?>
Временные файлы
Код:
<?php
// Создание временного файла
$tempFile = tmpfile();
fwrite($tempFile, "Временные данные");
rewind($tempFile);
echo fread($tempFile, 1024);
fclose($tempFile); // Файл автоматически удаляется
// Или с именем
$tempName = tempnam(sys_get_temp_dir(), 'prefix_');
file_put_contents($tempName, "Временные данные");
echo file_get_contents($tempName);
unlink($tempName);
?>
Архивирование файлов
Код:
<?php
// Создание ZIP архива
$zip = new ZipArchive();
if ($zip->open('archive.zip', ZipArchive::CREATE) === TRUE) {
$zip->addFile('file1.txt', 'file1.txt');
$zip->addFile('file2.txt', 'file2.txt');
$zip->close();
echo "Архив создан";
}
// Извлечение из архива
$zip = new ZipArchive();
if ($zip->open('archive.zip') === TRUE) {
$zip->extractTo('extracted/');
$zip->close();
echo "Архив распакован";
}
?>
Работа с файлами - важная часть PHP программирования. Эти примеры покрывают большинство задач по работе с файловой системой.