69706

Функції для роботи з файлами

Лекция

Информатика, кибернетика и программирование

Всі функції можна розділити на такі групи: Функції маніпулювання файлами. Функції для роботи з іменами файлів. Функції визначення типа і параметрів файлу.

Украинкский

2014-10-09

102 KB

2 чел.

Тема 26: Функції для роботи з файлами

РНР надає великий вибір самих різних функцій для роботи з файлами. Всі функції можна розділити на такі групи:

Функції маніпулювання файлами.

Функції для роботи з іменами файлів.

Функції визначення типа і параметрів файлу.

Функції визначення прав доступу до файлу.

Спеціальні функції.

11.3.1. Функції маніпулювання файлами

До цієї групи відносяться функції копіювання, перейменування, видалення файлів, а також деякі інші функції.

Для копіювання файлів використовується функція сміттю(string Ssource, string

Sdest). Ця функція копіює файл з ім'ям $source у файл з ім'ям $dest. Якщо файл $dest існує, він буде перезаписаний, тому ви повинні перевірити існування файлу за допомогою функції file_exists(), яка буде розглянута нижче.

Ще один момент, про який ви повинні поклопотатися перш, ніж почати копіювання. Ви повинні мати право на запис в каталог, в якому повинен знаходитися файл $dest, і в сам файл, якщо він до виклику функції існував, щоб перезаписати його.

Функція сміттю() повертає true, якщо файл вдало скопійований, і false — в зворотному випадку.

Перейменувати файл можна за допомогою функції rename(string Soldname

string Snewname). Функція перейменує файл $oldname у файл $newname. У випадку, якщо перейменувати файл не можна, функція поверне false. Це може відбутися в наступних випадках:

Файл $oldname не існує.

У вас немає прав доступу до файлу $oldname.

Файл з ім'ям 5newname вже існує. Звернете увагу, функція rename(), на відміну від функції сміттю(), не перезаписує файл.

Ім'я $newname знаходиться на іншій файловій системі, тобто на
іншому розділі диска або мережевій файловій системі.

Інші причини.

Видалити файл можна функцією unlink(string Sname). Функція повертає false, якщо файл не вдалося видалити.


Примітка.

Може виникнути питання: «Чому ця функція називається unlink(), а не remove(), erase() або delete()»? Річ у тому, що файлова система Unix-подібних операційних систем дозволяє створювати жорсткі і м'які (або символічні) посилання на файли - hard and soft (symbolic) links. Жорстке посилання - це ні що інше, як ім'я файлу. При цьому файлова система може містити один і той же файл, але використовувати для доступу до нього різні імена. Визначити жорсткі посилання просто - імена файлів разные, а номери инодов (інформаційних дескрипторів, індивідуальних для кожного файлу) - однакові. Всі жорсткі посилання (імена) є рівноправними, і ви не можете видалити файлдо тих пір, поки існує хоч би одне жорстке посилання на нього. Перш ніж видалити файл, ви повинні видалити всі жорсткі посилання, файл буде видалений, коли буде видалено його останнє ім'я. Все вищесказане не відноситься до символічних посилань. Таким чином, стає зрозуміло, чому функція видалення файлу називається unlink().


11.3.2. Функції для роботи з іменами файлів

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

Зі всіх функцій даної групи на перевірку виявилися корисними тільки чотири:

file_exists() — перевіряє існування файлу з вказаним ім'ям;

basename() — виділяє ім'я файлу з повного шляху;

dirname() — повертає ім'я каталога з повного шляху;

realpath() — перетворить відносний шлях до файлу в абсолютний;

tempname() — генерує ім'я тимчасового файлу.

Перша функція — file_exists(string Sname) перевіряє існування файлу з ім'ям $name:

<?

if    (!file_exists("/home/den/lines.txt")) f

echo   "Файл   не   існує"; } else   echo   "Файл   існує";

Ечевідно, що в приведеному сценарії, якщо файл існує, то буде !ыведено повідомлення «Файл існує». Інакше ви побачите юобщение «Файл не існує». Після виведення цього повідомлення можна ставити код, що створює новий файл, а можна завершити роботу сценарію.

Функція basename(string Sfull_filename) повертає основне ім'я файлу :o є ім'я файлу без шляху до нього.

echo   basename("/home/den/lines.txt");     //   виведе   lines.txt
echo   basename("/."); //      виведе.

Звернете увагу, функція basename() не перевіряє існування файлу, вона просто повертає частину рядка, що стоїть після останнього слеша. Дана функція правильно обробляє, як прямі слеші, так і зворотні (що важливе для Windows).

Функція dirname(string Spath) повертає ім'я каталога:

echo   dirname("/home/den/lines.txt");       //   виведе      /horae/den

echo   dirname("../lines.txt"); //   виведе   ..

echo   dirname("lines.txt"); //   виведе   .    (поточний  каталог)

echo  dirname("/swap_file"); //  виведе  /   -  в  Linux   \  -  в Windows-

Функція realpath() перетворить відносний шлях до файлу в абсолютний (повний):

echo   realpath("./lines.txt"); //   виведе   /home/den/lines.txt

Функція tempname(string $dir, string $prefix) генерує ім'я файлу в каталозі $dir з префіксом 5prefix, причому робить це так, що отримуване ім'я файлу унікальне. У якість аргументу $dir зазвичай указується тимчасовий каталог, а в якості $prefix — ім'я нашого сценарію (щоб знати, яка програма згенерувала файл), але це необов'язково — ви можете вказати все, що завгодно:

$fname   =   tempnam("/var/www/html/tmp","dev");

11.3.3. Функції визначення типа і параметрів файлу

Для визначення типу файлу використовується функція filetype(string Sfilename), яка повертає тип файлу — рядок (див. табл. 11.2).

Для визначення параметрів файлу використовується функція stat(string Sfilename), яка повертає докладну інформацію про файл — повертається масив, що складається з тринадцяти елементів (див. табл. 11.3).

Значення, що повертається

Тип файла

file

Найзвичайніший файл. Можливо, як текстовим, так і двійковим

dir

Каталог

link

Символічне посилання

fifo

FIFO-канал

block

Блоковий-орієнтований пристрій (наприклад, жорсткий диск -

-/dev/hddN)

char

Символьний-орієнтований пристрій (наприклад, термінал -

- /dev/ttyN)

unknown

Тип визначити не вдалося


Результат функції stat()

 Таблиця 11.3


Ключ масиву

Значення

0

Пристрій

1

Номер inode

2

Атрибути файлу

3

Число жорстких посилань на файл

4

Числовий ідентифікатор (User ID - UID)  власника файлу

5

Числовий ідентифікатор групи (Group ID - GID) власника файлу

6

Тип пристрою

7

Розмір файлу в байтах

8

Час останнього доступу (з 1 січня 1970 року) в секундах

9

Час останньої зміни файлу

10

Час останньої зміни атрибутів файлу

11

Розмір блоку

12

Число блоків, які займає файл

Сценарій, представлений в лістингу 11.9, збирає детальну інформацію про файл /home/den/lines.txt:

Лістинг 11.9. Детальна інформація про файл

<?

$f_info   =   stat("/home/den/lines.txt");

echo "Файл:    /home/den/lines.txt\n";

echo "Пристрій:    \t\t$f_info[0]\n";

echo "Номер   inode:    \t\t$f_info[l]\n";

echo "Атрибути   \t\t$f_info[2]\n";

echo "Число   жорстких   посилань:    \t$f  info[3]\n";

echo "UID   $f_info[4]    GID   $f_info75]\n";

echo "Тип   пристрою:    \t$finfo[6]\n";

echo "Розмір: \t\t$f_info[7]\n";

echo "Час останнього доступу: ".date("d M Y

H:i:s\$f_info[8])."\n";

echo "Час останньої зміни файлу: ".date("d M Y

H:i:s",$f_info[9])."\n";

echo "Час останньої зміни атрибутів файлу: ".date("d M Y

H:i:s",$f_info[10])."\n";

echo "Розмір блоку: $f_info[ll]\n";

echo "Число блоків, які займає файл: $f_info[12]\n";

?>

Мал.   11.9. Інформація про файл

Якщо ви працюєте під Windows 9x, багато елементів масиву міститимуть порожню рядок.

Якщо ви викликали функцію stat() для символічного посилання, то буде повернена інформація про файл, на який посилається посилання. Щоб отримати інформацію про посилання, використовуйте функцію lstat(). Формат масиву, що повертається нею, такий же, як і для функції stat().


 

А также другие работы, которые могут Вас заинтересовать

20433. Сетевые операционные системы, файловые серверы 174 KB
  Сетевые операционные системы В противоположность распределенным операционным системам сетевые операционные системы не нуждаются в том чтобы аппаратное обеспечение на котором они функционируют было гомогенно и управлялось как единая система. Машины и их операционные системы могут быть разными но все они соединены в сеть. Сетевые операционные системы также имеют в своем составе команду удаленного копирования для копирования файлов с одной машины на другую...
20434. Программное обеспечение промежуточного уровня 110.5 KB
  Программное обеспечение промежуточного уровня Ни распределенные ни сетевые операционные системы не соответствуют нашему определению распределенных систем данному в разделе 1. На ум приходит вопрос: а возможно ли вообще разработать распределенную систему которая объединяла бы в себе преимущества двух миров масштабируемость и открытость сетевых операционных систем и прозрачность и относительную простоту в использовании распределенных операционных систем Решение было найдено в виде дополнительного уровня программного обеспечения который...
20435. Систе́ма управле́ния ба́зами да́нных 159 KB
  Основные функции СУБД управление данными во внешней памяти на дисках; управление данными в оперативной памяти с использованием дискового кэша; журнализация изменений резервное копирование и восстановление базы данных после сбоев; поддержка языков БД язык определения данных язык манипулирования данными. Обычно современная СУБД содержит следующие компоненты: ядро которое отвечает за управление данными во внешней и оперативной памяти и журнализацию процессор языка базы данных обеспечивающий оптимизацию запросов на извлечение и...
20436. Модель клиент-сервер 39 KB
  Модель клиентсервер До этого момента мы вряд ли сказали чтото о действительной организации распределенных систем более интересуясь тем как в этих системах организованы процессы. Они пришли к выводу о том что мышление в понятиях клиентов запрашивающих службы с серверов помогает понять сложность распределенных систем и управляться с ней. В этом разделе мы кратко рассмотрим модель клиентсервер. Клиенты и серверы В базовой модели клиентсервер все процессы в распределенных системах делятся на две возможно перекрывающиеся группы.
20437. Разделение приложений по уровням 76 KB
  Например сервер распределенной базы данных может постоянно выступать клиентом передающим запросы на различные файловые серверы отвечающие за реализацию таблиц этой базы данных. В этом случае сервер баз данных сам по себе не делает ничего кроме обработки запросов. Однако рассматривая множество приложений типа клиентсервер предназначенных для организации доступа пользователей к базам данных многие рекомендовали разделять их на три уровня: уровень пользовательского интерфейса; уровень обработки; уровень данных. Уровень обработки обычно...
20438. CASE-средства 1.81 MB
  В предыдущей лекции было рассказано о видах диаграмм UML и даны некоторые рекомендации относительно последовательности их построения. Мы уже знаем что нотация UML специально разрабатывалась в расчете на то чтобы диаграммы можно было легко рисовать от руки. В этой лекции мы познакомимся с некоторыми подобными пакетами а именно: IBM Rational Rose; Borland Together; Microsoft Visio; Sparx Systems Enterprise Architect; Gentleware Poseidon; SmartDraw; Dia; Telelogic TAU G2; StarUML; другие программы UML отличное средство моделирования но как...
20439. Rational Rose DataModeler 29.5 KB
  Унифицированный язык объектноориентированного моделирования Unified Modeling Language UML явился средством достижения компромисса между этими подходами. Существует достаточное количество инструментальных средств поддерживающих с помощью UML жизненный цикл информационных систем и одновременно UML является достаточно гибким для настройки и поддержки специфики деятельности различных команд разработчиков. Таким языком оказался UML. Создание UML началось в октябре 1994 г.
20440. CASE-средства 39.5 KB
  Microsoft Visio Visio решение для построения диаграмм от Microsoft. По словам разработчиков Visio помогает преобразовать технические и бизнесконцепции в визуальную форму. Visio имеет некоторые дополнительные возможности но все же повторим по большей мере это только средство для иллюстрирования документов MS Office не дотягивающее до уровня пакетов которые мы описывали ранее. Изобразительные же возможности Visio действительно весьма широки: Используя предопределенные фигуры Visio Professional draganddrop и мастера вы можете...
20441. Эволюция CASE-средств 99.5 KB
  Таким образом CASEтехнологии не могут считаться самостоятельными методологиями они только делают более эффективными пути их применения. CASE ≈ не революция в программо технике: современные CASEсредства являются естественным продолжением эволюции всей отрасли средств разработки ПО. Традиционно выделяют шесть периодов качественно отличающихся применяемой техникой и методами разработки ПО которые характеризуются использованием в качестве инструментальных следующих средств: ассемблеров дампов памяти анализаторов компиляторов...