PHP
Функции для работы с файловой системой
Некоторые функции файловой системы
Функции файловой системы: php.net
copy - копирует файл
file_exists - проверяет существование указанного файла или каталога
file_get_contents - читает содержимое файла в строку
file_put_contents - записывает данные в файл
file - читает содержимое файла и помещает его в массив
is_dir - проверяет, является ли имя файла директорией
is_file - проверяет, является ли файл обычным файлом
move_uploaded_file - перемещает загруженный файл в новое место
rename - переименовывает файл или директорию
mkdir - пытается создать папку по указанному пути.
rmdir - удаляет папку по указанному пути.
unlink - удаляет файл по указанному в параметре пути.
copy
copy - эта функция берет уже существующий файл и копирует его по новому адресу.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Она принимает два обязательных параметра:
- путь к исходному файлу
- путь, куда мы хотим сохранить этот файл.
Создадим в нашей папке с уроком файл index.php и текстовый файл test.txt и создадим папку, которую назовем folder.
Файл test.txt:
-- файл test.txt --
Это файл test.text
С помощью функции copy скопируем файл test.txt в папку folder.
где:
'test.txt' - путь к файлу, который мы хотим копировать (первый параметр)- в нашем
случае он находится в этой же папке, где находится индексный файл index.php.
folder/ - куда будем копировать
file.txt - под каким именем будем копировать (можно задавать любое имя).
Файл index.php:
-- файл index.php --
<?php
(test.txt', 'folder/file.txt' );
?>
Запустим браузер и обновим страницу - в папке folder появился текстовый документ file.txt с тем же содержимым, что и в test.txt.
Файл file.txt:
-- файл file.txt --
Это файл test.text
file_exists
file_exists - проверяет наличие папки или файла.
Возвращает TRUE, если файл или папка существует, иначе возвращает FALSE.
Параметром принимает путь к файлу или каталогу , в нашем случае - folder/file.txt
- если файл folder/file.txt существует, то выведем: 'Файл существует' ,
- иначе выведем: 'Такого файла нет' .
Файл index.php
-- файл index.php --
<?php
if ( ('folder/file.txt' )) echo 'Файл существует' ;
else echo 'Такого файла нет' ;
?>
- после обновления страницы увидим: Файл существует
Если поменяем значение, например folder/file2.txt , то выведет: Такого файла нет.
Если укажем folder , то выведет: Файл существует.
file_get_contents
file_get_contents - позволяет прочитать содержимое файла
В переменную $file считываем с помощью функции file_get_contents содержимое файла test.txt
В качестве параметра передаем путь к файлу ('test.txt' ). Переменную $file сразу
выведем на экран.
Допишем файл test.txt:
-- файл test.txt --
Это файл test.txt
строка 2
строка 3
строка 4
строка 5
Файл index.php:
-- файл index.php --
<?php
echo $file = ('test.txt' );
// для многострочного текста: заменяем переносы строк на тэги
echo ( $file = ('test.txt' ));
?>
выведет:
Это файл test.txt строка 2 строка 3 строка 4 строка 5
// для многострочного текста
Это файл test.txt
строка 2
строка 3
строка 4
строка 5
Кроме чтения файлов данная функция может еще читать содержимое сайтов . Здесь в качестве параметра передаем путь к сайту
Файл index.php:
-- файл index.php --
<?php
$file = ('https://php.net/'); // считываем контент в файл
echo $file; // увидим страничку http://php.net/
echo ($file); // увидим код странички
?>
file_put_contents
file_put_contents - позволяет записать что-то в файл (php.net)
Функция возвращает integer - количество записанных байт в файл, или FALSE в случае ошибки.
Первый обязательный параметр - это путь к файлу , который мы будем записывать.
Второй обязательный параметр - это данные , которые мы будем записывать.
Запишем считанный контент в файл.
'folder/file.txt' - путь к файлу, в который запишем данные, хранящиеся в переменной $file.
Файл index.php:
-- файл index.php --
<?php
// читаем содержимое страницы в сети
$file = ('https://php.net/');
// записываем считанные данные в файл file.txt
('folder/file.txt' , $file );
?>
- выведет весь HTML-код данной страницы.
Прочитаем еще одну страницу в переменную $file2 и запишем также еще и ее.
Файл index.php:
-- файл index.php --
<?php
// читаем содержимое страницы в сети
$file = ('https://php.net/');
// читаем содержимое второй страницы
$file2 = ('https://www.php.net/manual/ru/function.file-put-contents.php');
// записываем считанные данные в файл file.txt
('folder/file.txt' ,$file );
// запишем в этот же файл содержимое переменной $file2
('folder/file.txt' ,$file2 );
?>
- выведет весь HTML-код второй страницы ($file2).
То есть, мы сначала записали в текстовый документ содержимое переменной $file, а затем мы перезаписали этот документ, записав в него содержимое переменной $file2.
Чтобы дописать что-то в файл, не затирая при этом то, что там было до того, нужно
воспользоваться третьим опциональным параметром flags.
Выбираем одну из трех констант - FILE_APPEND - эта константа позволяет записать
данные в конец файла, вместо того, чтобы его перезаписать.
Дополнительно можно еще использовать константу - LOCK_EX - она устанавливает эксклюзивную
блокировку на файл на время записи.
Файл index.php:
-- файл index.php --
<?php
// читаем содержимое страницы в сети
$file = ('https://php.net/');
// читаем содержимое второй страницы
$file2 = ('https://www.php.net/manual/ru/function.file-put-contents.php');
// записываем считанные данные в файл file.txt
('folder/file.txt' , $file , );
// запишем в этот же файл содержимое переменной $file2
('folder/file.txt' , $file2 , );
?>
- выведет весь HTML-код первой и второй страниц.
file
file - читает содержимое файла и помещает его в массив, то есть каждая строка будет элементом массива. Применяется для файлов, где есть форматированные данные, где в каждой строке содержится свой набор данных
Обязательный параметр - это путь к файлу , который мы будем записывать.
Запишем в текстовый файл test.txt следующее:
-- файл test.txt --
Это файл test.txt|email
строка 2|email
строка 3|email
строка 4|email
строка 5|email
В индексном файле запишем:
-- файл index.php --
<?php
$file = ('test.txt' );
echo '<pre>' ;
( $file );
echo '</pre>' ;
?>
- выведет:
Array
(
[0] => Это файл test.txt|email
[1] => строка 2|email
[2] => строка 3|email
[3] => строка 4|email
[4] => строка 5|email
)
Чтобы убрать пустые строки между элементами массива, можно воспользоваться необязательным параметром - flags .
В этом параметре нас интересуют две константы:
FILE_IGNORE_NEW_LINES - не добавляет новую строку в конце каждого элемента массива
FILE_SKIP_EMPTY_LINES - пропускает пустые строки
Файл index.php:
-- файл index.php --
<?php
$file = ('test.txt' , );
echo '< pre>';
( $file );
echo '< /pre>';
?>
- выведет:
Array
(
[0] => Это файл test.txt|email
[1] => строка 2|email
[2] => строка 3|email
[3] => строка 4|email
[4] => строка 5|email
)
В файл test.txt добавим пустую строку:
-- файл test.txt --
Это файл test.txt|email
строка 2|email
.................... // Здесь пустая строка
строка 3|email
строка 4|email
строка 5|email
В индексном файле запишем:
-- файл index.php --
<?php
$file = ('test.txt' , );
echo '< pre>';
( $file );
echo '< /pre>';
?>
- выведет:
Array
(
[0] => Это файл test.txt|email
[1] => строка 2|email
[2] =>
[3] => строка 3|email
[4] => строка 4|email
[5] => строка 5|email
)
Используем еще одну константу FILE_SKIP_EMPTY_LINES , константа добавляется через разделитель (|).
Файл index.php:
-- файл index.php --
<?php
$file = ( 'test.txt' , | );
echo '< pre>';
( $file );
echo '< /pre>';
?>
- выведет:
Array
(
[0] => Это файл test.txt|email
[1] => строка 2|email
[2] => строка 3|email
[3] => строка 4|email
[4] => строка 5|email
)
- пустых элементов массива теперь нет.
is_dir
is_dir - эта функция проверяет, является ли имя файла директорией.
Параметром принимает путь к файлу . Возвращает TRUE, если файл существует и является папкой, иначе возвращается FALSE.
Если is_dir('folder') вернет TRUE, то это - каталог (папка), иначе - это что-то другое.
Файл index.php:
-- файл index.php --
<?php
if ( ('folder' )) echo 'Это каталог' ;
else echo 'Это не каталог' ;
?>
- выведет: Это каталог
Как в Windows, так и в Unix пути можно указывать в полном и относительном виде. В относительном виде путь может содержать специальные управляющие символы "." (точка) и ".." (две точки). Точка указывает на текущую папку относительно файла index.php (В данном случае - папка с уроком), а две точки - указатель на папку уровнем выше (phplessons).
Файл index.php:
-- файл index.php --
<?php
if ( ( '..' )) echo 'Это каталог' ;
else echo 'Это не каталог' ;
?>
- выведет: Это каталог
is_file
is_file - проверяет, является ли файл обычным файлом и существует ли он вообще по указанному пути.
Параметром принимает путь к файлу . Возвращает TRUE , если файл существует и является обычным файлом, иначе возвращает FALSE .
Файл index.php:
-- файл index.php --
<?php
if ( ( 'test.txt' )) echo 'Это файл' ;
else echo 'Это не файл' ;
?>
- выведет: Это файл
move_uploaded_file
move_uploaded_file - эта функция перемещает загруженный по указанному пути файл, по новому пути.
Первый параметр - путь к загруженному файлу ($filename).
Второй параметр - путь, по которому необходимо переместить файл ($destination).
move_uploaded_file ( $filename , $destination );
rename
rename - переименовывает файл или директорию, в понимании операционной системы - перенести его куда нибудь.
Первый параметр - старое имя ($oldname).
Второй параметр - новое имя ($newname).
rename ( $oldname , $newname );
В индексном файле запишем: rename('test.txt', 'folder/file2.txt'); где
- 'test.txt' - старое имя (путь) файла,
- 'folder/file2.txt' - новое имя (путь) файла
Файл index.php:
-- файл index.php --
<?php
('test.txt' , 'folder/file2.txt' );
?>
В папке folder появится файл file2.txt - (файл переименован и перемещен)
Структура файлов урока
mkdir
mkdir - пытается создать папку по указанному пути.
Первый параметр - указанный путь для создания папки ($pathname).
Второй параметр - по умолчанию для папки устанавливаются все права - ($mode = 0777).
Третий параметр - разрешает создание вложенных директорий , указанных в pathname ($recursive).
mkdir ( $pathname , $mode = 0777 , $recursive = FALSE );
Создадим вложенную структуру: папка 1, в ней папка 2 и в папке 2 - папка 3.
Для этого указываем параметр с правами - 0777, и выставим третий параметр в true.
Файл index.php:
-- файл index.php --
<?php
('1/2/3' , 0777 , true );
?>
После обновления страницы получим желаемую структуру.
rmdir
rmdir - удаляет папку по указанному пути.
Файл index.php:
-- файл index.php--
<?php
('1/2/3'); // удалит папку 3
('1/2'); // удалит папку 2
('1'); // удалит папку 1
?>
unlink
unlink - удаляет файл по указанному в параметре пути.
Файл index.php:
-- файл index.php --
<?php
( 'folder/file.txt' ); // удалит файл file.txt из папки folder
?>
Наверх Наверх