Файловая структура и файловые системы. Файл и файловая структура

Лабораторная работа №10

ВЫВОД НА ДИСК И ПРИНТЕР

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

Более того, значения, присвоенные переменным, сохраняются только на время выполнения программы. Как только работа программы завершена, вся введенная информация теряется. Это означает, что если вы, например, ввели сведения о своей коллекции компакт-дисков в массив структурных переменных, они утрачиваются после завершения работы программы, и когда вы в следующий раз обратитесь к компьютеру, все данные придется вводить заново.

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

Что такое файловая структура

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

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

Когда программа открывает файл для работы, она тем самым создает специальную структуру в памяти. Эта структура содержит сведения,

Рис. 1. Некоторое время данные хранятся в буфере

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

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


Рис. 2. Файловая структура хранит информацию, необходимую для нормального выполнения файловых операций

Почти все компиляторы Си и Си++ хранят информацию, необходимую для работы с файлами, в файле заголовков STDIO.H. Этот файл содержит определения констант, которые нужны для операций с файлами. Кроме того, он может содержать описание файловой структуры. Для того, чтобы воспользоваться функциями работы с файлами, программу следует начинать с инструкции

#include,

которая сделает файловые константы и описание файловой структуры доступными в процессе компиляции и компоновки программы.

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

Указатель на файл

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

FILE *file_pointer;

Имя структуры FILE говорит программе о том, что определяемая переменная является указателем именно на файловую структуру. Звездочка предписывает создать указатель с соответствующим именем переменной.

Если вы собираетесь использовать одновременно несколько файлов, вам нужны указатели для каждого из них. Например, если вы пишете программу, в которой содержимое одного файла копируется в другой, вам необходимы два указателя на файлы. Два указателя требуются и в том случае, если вы хотите прочитать информацию с диска и распечатать ее на принтере:

FILE *infile, *outfile;

Как открыть файл

Связь между программой и файлом устанавливается при помощи функции fopen(), синтаксис которой показан на рис. 3.

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


Рис. 3. Синтаксис функции fopen()

определенными правилами. Например, в операционной системе MS-DOS имя файла может состоять максимум из восьми символов, плюс расширение имени, состоящее не более чем из трех символов (расширение не является обязательным элементом). Если вы хотите вывести информацию на печатающее устройство, а не в дисковый файл, в качестве имени файла в кавычках указывается "PRN". При этом автоматически осуществляется вывод данных на принтер.

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

R - Указывает на то, что будет выполняться чтение информации из файла в память компьютера. Если файл к этому моменту не существует на диске, программа сообщит об ошибке выполнения.w - Указывает на то, что будет выполняться запись данных на диск или вывод на принтер. Если файл к этому моменту не существует, операционная система создаст его. Если файл уже существует на диске, вся записанная в нем на данный момент информация будет уничтожена.a - Указывает на то, что следует добавить информацию в конец файла. В случае отсутствия файла, операционная система создаст его. Если он существует, выводимые новые данные будут добавлены в конец файла без уничтожения текущего содержимого.

Например, если вы хотите создать файл с именем CD.DAT для хранения картотеки коллекции компакт-дисков, вы должны использовать следующие инструкции:

FILE *cdfile;cdfile = fopen("CD.DAT", "w");

Если в программе требуется осуществить чтение из файла, а не запись в него, используйте следующую запись:

FILE *cdfile;cdfile = fopen("CD.DAT", "r");

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

Если вы хотите распечатать информацию о вашей коллекции на принтере, используйте следующую последовательность инструкций:

FILE *cdfile;cdfile = fopen("PRN", "w");

Учтите, что вывод информации на принтер возможен только с режимом доступа "w".

Как Си/Си++ работает с файлами

Си сохраняет сведения о текущей позиции чтения и записи в файле, используя специальный указатель.

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

Если файл открывается с режимом доступа "w", указатель также помещается в начало файла, так что первые введенные данные будут помещены в начало файла. При закрытии файла после введенного массива данных будет добавлен символ конца файла. Если файл к моменту его открытия с использованием режима доступа "w" уже существует, все содержащиеся в нем данные затираются и «поверх» них записывается новая информация, введенная с помощью процедуры записи. Любые данные, которые могут остаться не уничтоженными, располагаются после нового символа конца файла, так что к ним уже нельзя будет обратиться при следующем чтении данных из файла. Таким образом, любая попытка записи данных в существующий файл с использованием режима доступа "w" приведет к уничтожению хранящейся в нем на данный момент информации. Это произойдет даже в том случае, если файл будет просто открыт и закрыт, без записи каких-либо данных.

Если файл открывается с использованием режима доступа "a", указатель помещается на символ конца файла. Новые данные, которые записываются в файл, размещаются после уже существующих данных, а затем добавляется символ конца файла.

Как закрыть файл

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

Fclose(file_pointer);

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

Следует добавить, что закрытие файла освобождает указатель, после чего он может быть использован с другим файлом или для выполнения других операций с тем же файлом. В качестве примера предположим, что вы хотите создать файл, записать в него данные, а затем убедиться, что информация записана правильно. Для этого в программе можно использовать структуру, приведенную в Листинге1.

Листинг 1. Использование одного указателя файла в двух операциях.

FILE *cdfile;if((cdfile = fopen("CD.DAT", "w")) == NULL) { puts("Невозможно открыть файл"); exit(); }/* Здесь должны располагаться инструкции записи в файл */fclose(cdfile);if((cdfile = fopen("CD.DAT", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); }/* В этом месте должны быть записаны инструкции чтения из файла */fclose(cdfile);

Здесь файл сначала открывается с использованием режима доступа "w", затем в него записывают данные. Во второй раз файл открывается с использованием режима доступа "r", что позволяет прочитать данные и вывести их на экран.

Некоторые компиляторы позволяют обеспечить запись всех данных в файл путем очистки буфера с помощью функции

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

Функции ввода и вывода

Существует несколько способов передачи данных в файл и получения их из файла в зависимости от используемой функции:

· посимвольная запись данных в файл или вывод их на принтер с использованием функции putc() или fputc();

· посимвольное чтение данных из файла с использованием функции getc() или fgetc();

· построчная запись данных в файл или вывод их на принтер с использованием функции fputs();

· построчное чтение данных из файла с использованием функции fgets();

· форматированный вывод символов, строк или чисел на диск или на принтер с помощью функции fprintf();

· форматированный ввод символов, строк или чисел из файла с помощью функции fscanf();

· запись целой структуры с использованием функции fwrite();

· чтение целой структуры с использованием функции fread().

Работа с символами

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

/*fputc.c*/#include main() { FILE *fp; char letter; if((fp = fopen("MYFILE","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } do { letter=getchar(); fputc(letter, fp); } while(letter != "\r"); fclose(fp); }

Файл открывается с режимом доступа "w". Если файл с именем MYFILE не существует к моменту выполнения программы, он будет создан. В цикле do, с помощью функции getchar(), осуществляется ввод последовательности символов, которые затем записываются в файл с помощью функции putc(). Синтаксис записи putc() таков:

Putc(char_variable, file_pointer);

С теми же аргументами может использоваться и функция fputc().

Цикл выполняется до тех пор, пока не нажата клавиша Enter , которая вводит код «возврат каретки» (\r), после чего файл закрывается.

Работа со строками

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

Функция fputs() имеет следующий синтаксис:

Fputs(string_variable, file_pointer);

Эта функция выполняет построчную запись данных в файл или вывод на принтер, но не добавляет код «новая строка». Для того чтобы каждая строка записывалась на диск (или печаталась на принтере) действительно как отдельная строка, необходимо вводить код «новая строка» вручную. Например, в приведенной ниже программе создается файл имен:

/*fputc.c*/#include main() { FILE *fp; char flag; char name; if((fp = fopen("MYFILE","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } flag = "y"; while(flag != "n") { puts("Введите имя"); gets(name); fputs(name, fp); fputs("\n",fp); printf("Желаете ввести другое имя?"); flag=getchar(); putchar("\n"); } fclose(fp); }

Выполнение цикла while продолжается до тех пор, пока в ответ на подсказку не будет введен символ n. В этом цикле осуществляется ввод имени с клавиатуры с помощью функции gets(), после чего имя записывается на диск с помощью функции fputs(). Далее в файл записывается код «новая строка», и, наконец, программа спрашивает пользователя, желает ли он продолжить ввод имен.

Если ваш компилятор может использовать функцию strlen(), можно несколько упростить процедуру ввода, используя следующие инструкции:

Printf("Пожалуйста, введите имя: ");gets(name);while(strlen(name) > 0) { fputs(name, fp); fputs("\n", fp); printf("Пожалуйста, введите имя: "); gets(name); }

Символы, которые вы набираете на клавиатуре, присваиваются строковой переменной name, а затем проверяется, не оказалась ли длина строки равной 0. Если на запрос сразу же нажать клавишу Enter, строка будет иметь нулевую длину и выполнение цикла прекратится. Если до нажатия Enter ввести хотя бы один символ, строка и код «новая строка» будут записаны на диск.

Некоторые компиляторы позволяют еще более упростить алгоритм ввода строки, например, так:

Printf("Пожалуйста, введите имя: ");while(strlen(gets(name)) > 0) { fputs(name, fp); fputs("\n", fp); printf("Пожалуйста, введите имя: "); }

где ввод строки выполняется внутри условия while.

Для того чтобы напечатать строку на принтере, вместо записи ее на диск используется имя файла "prn". Чтобы открыть файл, требуется указать:

If ((fp = fopen("prn", "w")) == NULL)

Для создания программы печати длина строки определяется равной 81 символу, чтобы строка могла уместиться во всю ширину экрана, прежде чем будет нажата клавиша Enter . В Листинге 2 приводится текст программы, которая демонстрирует, как можно написать простой текстовый процессор. Строка не посылается на принтер до тех пор, пока не нажата клавиша Enter , что позволяет с помощью клавиши Backspace корректировать ошибки ввода строки.

Листинг 2. Программа вывода строки на печатающее устройство.

/*wp.c*/#include "stdio.h"main() { FILE *fp; char line; if ((fp = fopen("prn", "w")) == NULL) { puts("Принтер не готов к работе"); exit(); } puts("Введите текст, после ввода каждой строки нажимайте Enter\n"); puts("Для прекращения ввода нажмите Enter в начале новой строки\n"); gets(line); while (strlen(line) > 0) { fputs(line, fp); fputs("\n", fp); gets(line); } fclose(fp); }

Чтение строк

Чтение строк из файла осуществляется с помощью функции fgets(). Синтаксис функции:

Fgets(string_variable, lenght, file_pointer);

Функция вводит строку целиком до символа новой строки, если ее длина не превышает значения, указанного в параметре lenght минус один символ. Параметр lenght является целым числом либо целочисленной константой или переменной, указывающей максимально возможное количество символов в строке.

Ниже приведена программа, в которой осуществляется чтение имен из файла, созданного в предыдущем примере:

/*fgets.c"/#include "stdio.h"main() { FILE *fp; char name; if ((fp = fopen("MYFILE", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); } while(fgets(name, 12, fp) != NULL) { printf(name); } fclose(fp); }

Ввод выполняется внутри цикла while до тех пор, пока значение читаемого символа не равно NULL. Как только указатель достигнет конца файла, строковой переменной присваивается значение NULL. При построчном чтении из файла для указания конца файла всегда используется NULL, а EOF используют при посимвольном чтении.

Если вы пишете программу, предназначенную для чтения любого текстового файла, указывайте значение аргумента lenght равным 80.

Кстати, обратите внимание, что функция printf() используется в этом примере для вывода содержимого строковой переменной без указателей формата. Каждая строка, читаемая из файла, включает код «новая строка», который был записан в файл в инструкции fputs("\n", fp);, и никаких дополнительных кодов «новая строка» в параметры функции printf() включать не требуется.

Листинг 3. Форматированный вывод.

/*fprintf.c*/#include "stdio.h"main() { FILE *fp; char name; int quantity; float cost; if ((fp = fopen("MYFILE", "w")) == NULL) { puts("Невозможно открыть файл"); exit(); } printf("Введите наименование товара: "); gets(name); while (strlen(name) > 0) { printf("Введите цену товара: "); scanf("%f", &cost); printf("Введите количество единиц товара: "); scanf("%d", &quantity); fprintf(fp, "%s %f %d\n", name, cost, quantity); printf("Введите наименование товара: "); gets(name); } fclose(fp); }

Обратите внимание, что в последней строке цикла происходит ввод следующего имени. Это позволяет прекратить повторение цикла простым нажатием клавиши Enter . Некоторые начинающие программисты, вероятно, написали бы этот цикл таким образом:

Do { printf("Введите наименование товара: "); gets(name); printf("Введите цену: "); scanf("%f", &cost); printf("Введите количество единиц товара: "); scanf("%d", &quantity); fprintf(fp, "%s %f %d\n", name, cost, quantity); }while (strlen(name) > 0);

и эта программа работала бы столь же успешно, не считая того, что для окончания цикла требовалось бы нажать клавишу Enter трижды: первый раз при вводе названия и еще два раза в ответ на просьбу ввести цену и количество товара.

Внутри цикла while данные о цене и количестве каждого наименования товара вводятся с использованием функции scanf(), а затем записываются на диск с помощью инструкции

Fprintf(fp, "%s %f %d\n", name, cost, quantity);

Обратите внимание, что код «новая строка» записывается в файл в конце каждой строки. Если просмотреть содержимое файла с помощью команды TYPE операционной системы MS-DOS, то каждая строка инвентарной описи и на экране будет начинаться с новой строки:

Если бы код «новая строка» не был записан на диск, текст выводился бы подряд, в одну строку на экране, и выглядел примерно так:

Дискеты 1.120000 100лента 7.340000 150картридж 75.000000 3

Заметьте, что при этом отсутствует пробел между числом, показывающим количество единиц одного товара, и наименованием следующего. Даже при таком способе записи можно без проблем осуществлять чтение из этого файла, так как компилятор в состоянии различить конец числового значения и начало строки, но что произойдет, если последним значением для каждого наименования товара окажется строка с названием фирмы-производителя? Информация в файле будет выглядеть примерно таким образом:

Дискеты 1.120000 Memoryexлента 7.340000 Okaydataкартридж 75.000000 HP

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

Дискеты 1.120000 Memoryexлента

Все выведенные на диск данные, даже значения типа int или float, хранятся в виде текстовых символов. Об этом мы будем говорить чуть позже.

Листинг 4. Чтение форматированного текста из файла.

/*fscanf.c*/#include "stdio.h"main() { FILE *fp; char name; int quantity; float cost; if ((fp = fopen("MYFILE", "r")) == NULL) { puts("Невозможно открыть файл"); exit(); } while (fscanf(fp, "%s%f%d", name, &cost, &quantity) != EOF) { printf("Наименование товара: %s\n", name); printf("Цена: %.2f\n", cost); printf("Количество единиц: %d\n", quantity); } fclose(fp); }

Работа со структурами

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

Синтаксис функции fwrite() такой:

Fwrite(&structure_variable, structure_size, number_of_structures, file_pointer);

На первый взгляд, эта инструкция выглядит несколько устрашающей, но на самом деле использовать ее очень легко:

· &structure_variable - имя структурной переменной с оператором получения адреса, сообщающим компилятору стартовый адрес информации, которую мы хотим записать на диск;

· structure_size - это количество символов в структуре; не обязательно подсчитывать его самому, для этого можно использовать библиотечную функцию sizeof(), записанную следующим образом:

Sizeof(structure_variable)

которая автоматически определит размер указанной структуры;

· number_of_structures - это целое число, определяющее количество структур, которые мы хотим записать в один прием; здесь всегда следует указывать число 1, если только вы не собираетесь создать массив структур и записать его одним большим блоком;

· file_pointer - указатель на файл.

В качестве примера предположим, что вы хотите записать на диск сведения о своей коллекции компакт-дисков. Используя структуру CD, которую мы подробно разбирали ранее, пишем инструкцию: fwrite(&disc, sizeof(disc), 1, fp);

Выполнение этой инструкции иллюстрирует рис. 5.

Текст программы, которая вводит данные в структуру CD, а затем сохраняет ее на диске, приведен в Листинге12.5. Для ввода имени создаваемого файла используется функция gets(). Переменная, в которой хранится имя файла, используется функцией fopen() для того, чтобы открыть файл.

Информация о каждой структуре CD вводится с клавиатуры, после чего структура целиком записывается на диск.



Рис. 5. Синтаксис функции fwrite() в инструкции записи структуры CD

Листинг 5. Запись структуры CD.

/*fwrite.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; char filename; printf("Введите имя файла, который вы желаете создать: "); gets(filename); if ((fp = fopen(filename, "w")) == NULL) { printf("Невозможно открыть файл %s\n", filename); exit(); } puts("Введите сведения о диске\n"); printf("Введите название диска: "); gets(disc.name); while (strlen(disc.name) > 0) { printf("Введите описание: "); gets(disc.description); printf("Введите категорию: "); gets(disc.category); printf("Введите цену: "); scanf("%f", &disc.cost); printf("Введите номер ячейки: "); scanf("%d", &disc.number); fwrite(&disc, sizeof(disc), 1, fp); printf("Введите название: "); gets(disc.name); } fclose(fp); }

Чтение структур

Fread(&structure_variable, structure_size, number_of_structures, file_pointer);

За исключением имени функции эта инструкция полностью совпадает с записью функции fwrite(). Программа, в которой из файла считывается структура CD, приведена в Листинге 6. Для чтения данных используется цикл while:

While (fread(&disc, sizeof(disc), 1, fp) == 1)

Функция fread() возвращает значение, соответствующее количеству успешно прочитанных структур. Так как в аргументе функции мы указали, что читать следует по одной структуре, функция возвращает значение 1. Цикл while будет выполняться до тех пор, пока считывание структур с диска проходит успешно. Если чтение структуры становится невозможным, например потому, что достигнут конец файла, функция возвращает значение 0, и выполнение цикла прекращается.

Листинг 6. Чтение структуры CD с диска.

/*fread.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; char filename; printf("Введите имя файла, который желаете открыть: "); gets(filename); if ((fp = fopen(filename, "r")) == NULL) { printf("Невозможно открыть файл %s\n", filename); exit(); } while (fread(&disc, sizeof(disc), 1, fp) == 1) { puts(disc.name); putchar("\n"); puts(disc.description); putchar("\n"); puts(disc.category); putchar("\n"); printf("%f", disc.cost); putchar("\n"); printf("%d", disc.number); } fclose(fp); }

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

Таблица 1. Функции ввода в файл и вывода из файла.

Чтение в массив

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

В Листинге 7 приведен текст программы, осуществляющей чтение информации из файла, содержащего данные о коллекции компакт-дисков, в массив структур CD (предполагается, что их количество не превышает 20). Индекс используется для того, чтобы каждая считанная из файла структура сохранялась в отдельном элементе массива disc. После того как очередная структура прочитана и выведена на экран, стоимость очередного диска добавляется к сумме, отражающей общую стоимость коллекции, а значение индекса и счетчика увеличивается за счет выполнения следующих инструкций:

Total = total + disc.cost;index++;count++;

Если бы нас интересовала только информация об общей стоимости и количестве экземпляров коллекции, можно было бы читать данные в структурную переменную, не используя массив, и просто подсчитывать значения переменных total и count. Однако если данные будут считаны в массив, вы сможете произвольным образом обращаться к структурам и печатать любую информацию.

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

Листинг 7. Чтение структуры в массив.

/*rarray.c*/#include "stdio.h"main() { FILE *fp; struct CD { char name; char description; char category; float cost; int number; } disc; int index, count; float total; count = 0; total = 0; char filename; printf("Введите имя файла данных: "); gets(filename); while ((fp = fopen(filename, "r")) == NULL) { printf("Невозможно открыть файл %s\n", filename); printf("Введите имя файла данных: "); gets(filename); } index = 0; while (fread(&disc, sizeof(disc), 1, fp) == 1) { puts(disc.name); putchar("\n"); puts(disc.description); putchar("\n"); puts(disc.category); putchar("\n"); printf("%f", disc.cost); putchar("\n"); printf("%d", disc.number); total = total + disc.cost; index++; count++; } fclose(fp); printf("Общая стоимость коллекции составляет %.2f\n", total); printf("Коллекция содержит %.d дисков\n", count); }

Листинг 8. Программа копирования содержимого файлов.

/*filecopy.c*/#include "stdio.h"main() { FILE *fp1, *fp2; char infile, outfile; int letter; printf("Введите имя файла для чтения: "); gets(infile); if ((fp1 = fopen(infile, "r")) == NULL) { printf("Невозможно открыть файл %s", infile); exit(); } printf("Введите имя файла для записи: "); gets(outfile); if ((fp2 = fopen(infile, "w")) == NULL) { printf("Невозможно открыть файл %s", outfile); fclose(fp1); exit(); } while ((letter = fgetc(fp1)) != EOF) { putchar(letter); fputc(letter, fp2); } fclose(fp1); fclose(fp2); }

Первый файл открывается с режимом доступа "r", чтобы можно было прочитать из него данные. Если файл невозможно открыть, программа завершается. Второй файл открывается с режимом доступа "w", что позволяет записывать в


Рис. 6. Функция fprintf() записывает числовые значения в виде текстовых символов

него данные. Если второй файл невозможно открыть, то перед завершением программы сначала закрывается первый файл. Это дает нам гарантию того, что первый файл, если он был успешно открыт, не окажется поврежден в момент выхода из программы.

Функция fprintf() записывает все данные в виде текста. Например, если использовать fprintf() для записи числа 34.23 на диск, пять символов будут записаны так, как это показано на рис. 6. Если в дальнейшем для чтения данных из файла используется функция fscanf(), символы будут преобразованы в числовое значение и в таком виде записаны в переменную.

Вследствие того, что функция fprintf() записывает данные в виде текста, чтение из файла можно осуществлять и с помощью функций getc(), fgetc() или fgets(). Однако эти функции будут читать информацию в виде «печатных» символов. Например, если использовать функцию fgets(), числа будут считываться в виде символов, являющихся частью строки. При отображении на экране или печати на принтере данных, прочитанных с использованием функции fgets() или fgetc(), вы будете лишены возможности выполнения арифметических операций над отдельными элементами данных.

Двоичный формат

Для сохранения числовых переменных в двоичном формате используется функция fwrite(). Записанные таким образом данные на диске займут столько же места, сколько и в памяти. Если просмотреть содержимое такого файла с помощью команды TYPE, мы увидим на месте числовых значений бессмысленные буквы и значки. Это ASCII-символы, эквивалентные записанным в файл значениям.

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

Печать данных

С технической точки зрения вывести данные на принтер можно с помощью любой функции вывода: посимвольно, построчно, форматированными строками или структурами. Единственное, что необходимо, - это указать имя файла "prn" и режим доступа "w".

Однако «поструктурная» печать с помощью функции fwrite() практически не используется, так как числовые данные при этом будут напечатаны в двоичном формате в виде загадочных символов. Вместо этого для печати структур используется функция fprintf(), как это показано в Листинге 9. В этой программе открываются два файла: дисковый файл открывается для чтения, а файл принтера - для вывода.

Листинг 9. Чтение и печать содержимого дискового файла.

Каждая структура целиком вводится функцией fread(), после чего отдельные члены структуры печатаются с использованием функции fprintf(). Функция fread() может читать строки, включающие пробелы, поэтому ее применение предпочтительнее, чем использование функции fscanf().

Инструкции

Fprintf(ptr, "\n\n");

выводят по две пустые строки между отдельными структурами CD.

Проектирование программы

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

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

Файловая система позволяет систематизировать программы и данные и организовать упорядоченное управление этими объектами.

На операционные системы персональных компьютеров наложила глубокий отпечаток концепция файловой системы, лежащей в основе ОС Unix. В ОС Unix подсистема ввода-вывода унифицирует способ доступа как к файлам, так и к периферийным устройствам. Под файлом при этом понимают набор данных на диске, терминале или каком-либо другом устройстве.

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

Файловая система – это система управления данными.

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

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

Файловая система (назначение):

  • скрывает картину реального расположения информации во внешней памяти;
  • обеспечивает независимость программ от особенностей конкретной конфигурации компьютера (логический уровень работы с файлами);
  • обеспечивает стандартные реакции на ошибки, возникающие при обмене данными.

Файловая структура

Вся совокупность файлов на диске и взаимосвязей между ними называется файловой структурой. Развитые операционные системы имеют иерархическую - многоуровневую файловую структуру, организованную в виде дерева.

Файловая структура в виде дерева

Используется древовидная структура каталогов – дерево каталогов. Заимствована у Unix. Иерархическая структура – структура системы, части (компоненты) которой связаны отношениями включения или подчинения.

Иерархическая структура изображается ориентированным деревом, в котором вершины соответствуют компонентам, а дуги – связям.

дерево каталогов диска G

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

Деревья используются при описании и проектировании иерархических структур.

Корень – начальная позиция, листья – заключительная позиция.

Разделы

Любой жесткий или магнитооптический диск в процессе форматирования можно разделить на несколько частей и работать с ними как с отдельными (самостоятельными) дисками. Эти части называются разделами или логическими дисками. Разбиение диска на несколько логических дисков может быть необходимо из-за того, что ОС не могут работать с дисками, размер которых превышает определенную величину. Очень удобно хранить данные и пользовательские программы отдельно от системных программ (ОС), ведь ОС может «слететь с компьютера».

Раздел – область диска. Под логическим диском(разделом) в компьютере понимается любой носитель информации, с которым операционная система работает как с единым целым объектом.

Имя диска – обозначение логического диска; запись в корневом каталоге.

Логические диски (разделы) обозначаются латинскими буквами A, B, C, D, E, … (32 буквы от A до Z).

Буквы A, B зарезервированы для обозначения дискет.

С – жесткий диск, обычно с которого производится загрузка ОС.

Остальные буквы – логические диски, компакт-диски и т.д. Максимальное количество логических дисков для ОС Windows – бесконечное.

В таблице разделов указывается расположение начала и конца этого раздела и число секторов в этом разделе (место и размер).

Файловая структура логического диска

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

Элементы файловой структуры:

    стартовый сектор (начальной загрузки, Boot-сектор);

    таблица размещения файлов (FAT – File Allocation Table);

    корневой каталог (Root Directory);

    область данных (оставшееся свободным дисковое пространство).

Файловая структура на дискете емкостью 360 кбайт

Boot-сектор – первый (начальный) сектор диска. Находится на 0- стороне, 0-дорожке.

Boot-сектор содержит служебную информацию:

    размер кластера диска (кластер – блок, объединяющий в группу несколько секторов для сокращения размера FAT-таблицы);

    местоположение FAT-таблицы (в вoot-секторе находится указатель на то, где расположена FAT-таблица);

    размер FAT-таблицы;

    количество FAT-таблиц (всегда есть как минимум 2 копии таблицы для обеспечения надежности и безопасности, т.к. разрушение FAT ведет к потере информации и трудно восстанавливается);

    адрес начала корневой директории и ее максимальный размер.

В вoot-секторе находится блок начальной загрузки (загрузчик) – загрузочная запись Boot Record.

Загрузчик – обслуживающая программа, которая помещает выполняемую программу в оперативную память и приводит ее в состояние готовности к исполнению.

FAT (таблица размещения файлов)

FAT (File Allocation Table) – таблица размещения файлов. В ней определено, какие участки диска относятся к каждому файлу.Область данных диска представлена в ОС как последовательность пронумерованных кластеров.

FAT – это массив элементов, адресующих кластеры области данных диска. Каждому кластеру области данных соответствует один элемент FAT. Элементы FAT служат в качестве цепочки ссылок на кластеры файла в области данных.

FAT состоит из элементов длиной 16 /32/64 бита. Всего в таблице может быть до 65520 таких элементов, каждый из них (кроме первых двух) соответствует кластеру диска. Кластер является той единицей, в которой распределяется пространство в области данных на диске для файлов и каталогов. Первые два элемента таблицы (с номерами 0 и 1) зарезервированы, а каждый из остальных элементов таблицы описывает состояние кластера диска с тем же номером. Элемент может указывать, что кластер свободен, что кластер дефектный, что кластер принадлежит файлу и является последним кластером в файле. Если кластер принадлежит файлу и не является его последним кластером, то элемент таблицы содержит номер следующего кластера в этом файле.

FAT – крайне важный элемент файловой структуры. Нарушения в FAT могут привести к полной или частичной потери информации на всем логическом диске. Именно поэтому, на диске хранится две копии FAT. Существуют специальные программы, которые контролируют состояние FAT и исправляют нарушения.

Для разных ОС необходимы разные версии FAT

Windows 95 FAT 16, FAT 32

Windows NT (XP) NTFS

Novell Netware TurboFAT

UNIX NFS,ReiserFS

Логическая структура носителя информации

Полная информация о кластерах, которые занимают файлы, содержится в таблице размещения файлов FAT (FAT - File Allocation Table).

Количество ячеек FAT соответствует количеству кластеров на диске, а значениями ячеек являются цепочки размещения файлов, т.е. последовательности адресов кластеров, в которых хранятся файлы..

Например, для файлов Файл_1 и Файл_2 таблица FAT с 1-й по 54-ю ячейку принимает вид:

Фрагмент FAT

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

Он не вложен ни в какие другие каталоги, это каталог самого верхнего уровня

На одном диске бывает только один корневой каталог

Каталог - это поименнованная совокупность файлов и подкаталогов (т.е. вложенных каталогов).

Каталог (папка) – специальное место на диске, в котором хранится информация о местоположении файлов.

В каталоге хранится информация о файлах и подкаталогах - имя, размер, дата и время последнего обновления и т.п.

Каждый каталог имеет имя, и он может быть зарегистрирован в другом каталоге.

Основная цель такой структуры каталогов – организация эффективного хранения большого количества файлов на диске.

Подкаталог – каталог более низкого уровня (вложенный) по отношению к текущему каталогу.

Текущий каталог (папка)– каталог, с которым в данный момент работает пользователь (просматривает содержимое каталога).

пример файловой структуры диска С

Перейдем в следующей теме к главному элементу файловой системы - ФАЙЛУ

Как установить такие кнопки?
Давайте дружить!

komputercnulja.ru

Файлы и файловые структуры - Информатика в школе

Логические имена устройств внешней памяти

К каждому компьютеру может быть подключено несколько устройств внешней памяти. Основным устройством внешней памяти ПК является жёсткий диск. Если жёсткий диск имеет достаточно большую ёмкость, то его делят на несколько логических разделов.

Наличие нескольких логических разделов на одном жёстком диске обес­печивает пользователю следующие преимущества:

Можно хранить операционную систему в одном логическом разделе, а данные - в другом, что позволит переустанавливать операционную систему, не затрагивая данные;

На одном жёстком диске в различные логические разделы можно установить разные операционные системы;

Обслуживание одного логического раздела не затрагивает другие разделы.

Каждое подключаемое к компьютеру устройство внешней памяти, а также каждый логический раздел жёсткого диска имеют логическое имя.

В операционной системе Windows приняты логические имена устройств внешней памяти, состоящие из одной латинской буквы и знака двоеточия:

Для дисководов гибких дисков (дискет) - А: и В:;

Для жёстких дисков и их логических разделов - С:, D:, Е: и т. д.;

Для оптических дисководов - имена, следующие по алфавиту после имени последнего имеющегося на компьютере жёсткого диска или раздела жёсткого диска (например, F:);

Для подключаемой к компьютеру флэш-памяти - имя, следующее за последним именем оптического дисковода (например, G:).

В операционной системе Linux приняты другие правила именования дисков и их разделов.

Например:

Логические разделы, принадлежащие первому жёсткому диску, получают имена hdal, hda2 и т. д.;

Логические разделы, принадлежащие второму жёсткому диску, получают имена hdbl, hdb2 и т. д.

Все программы и данные хранятся во внешней памяти компьюте­ра в виде файлов.

Файл - это поименованная область внешней памяти.

Файловая система - это часть ОС, определяющая способ органи­зации, хранения и именования файлов на носителях информации.

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

Имя файла, как правило, состоит из двух частей, разделённых точкой: собственно имени файла и расширения. Собственно имя файлу даёт пользователь. Делать это рекомендуется осмысленно, от­ражая в имени содержание файла, хотя пользователь может задавать в качестве имени произвольный набор символов. Расширение имени обычно задаётся программой автоматически при создании файла. Расширения не обязательны, но они широко используются. Расширение позволяет пользователю, не открывая файла, определить его тип - какого вида информация (программа, текст, рисунок и т. д.) в нём содержится. Расширение позволяет операционной системе авто­матически открывать файл.

В современных операционных системах имя файла может включать до 255 символов, причём в нём можно использовать буквы национальных алфавитов и пробелы. Расширение имени файла запи­сывается после точки и обычно содержит 3-4 символа.

В ОС Windows в имени файла запрещено использование следующих символов: \, /, :, *, ?, ", |. В Linux эти символы, кроме /до­пустимы, хотя использовать их следует с осторожностью, так как некоторые из них могут иметь специальный смысл, а также из соображений совместимости с другими ОС.

Операционная система Linux, в отличие от Windows, различает строчные и прописные буквы в имени файла: например, FILE.txt, file.txt и FiLe.txt - это в Linux три разных файла.

В таблице приведены наиболее распространённые типы файлов и их расширения:

В ОС Linux выделяют следующие типы файлов:

Обычные файлы - файлы с программами и данными;

Каталоги - файлы, содержащие информацию о каталогах;

Специальные файлы устройств - файлы, используемые для представле­ния физических устройств компьютера (жёстких и оптических дисково­дов, принтера, звуковых колонок и т. д.).

Каталоги

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

Каталог также получает собственное имя. Он сам может входить в состав другого, внешнего по отношению к нему каталога. Каждый каталог может содержать множество файлов и вложенных каталогов.

Каталог - это поименованная совокупность файлов и подкаталогов (вложенных каталогов).

Каталог самого верхнего уровня называется корневым каталогом.

В ОС Windows любой информационный носитель имеет корневой каталог, который создаётся операционной системой без участия поль­зователя. Обозначаются корневые каталоги добавлением к логическому имени соответствующего устройства внешней памяти знака «\» (обратный слэш): А:\, С:\, D:\, E:\ и т. д.

В Linux каталоги жёстких дисков или их логических разделов не принадлежат верхнему уровню файловой системы (не являются коричневыми каталогами). Они «монтируются» в каталог mnt. Другие устройства внешней памяти (гибкие, оптические и флэш-диски) «монтируются» в каталог media. Каталоги mnt и media, в свою оче­редь, «монтируются» в единый корневой каталог, который обознача­ется знаком « / » (прямой слэш).

Файловая структура диска

Файловая структура диска - это совокупность файлов на диске и взаи­мосвязей между ними.

Файловые структуры бывают простыми и многоуровневыми (иерархическими).

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

Иерархические файловые структуры используются для хранения большого (сотни и тысячи) количества файлов. Иерархия - это рас­положение частей (элементов) целого в порядке от высшего к низшим. Начальный (корневой) каталог содержит файлы и вложенные каталоги первого уровня. Каждый из каталогов первого уровня может содержать файлы и вложенные каталоги второго уровня и т. д. (рис. 2.9). В этом случае оглавление диска можно сравнить с оглавлением нашего учебника: в нём выделены главы, состоящие из параграфов, которые, в свою очередь, разбиты на отдельные пункты и т. д.

Пользователь, объединяя по собственному усмотрению файлы в каталоги, получает возможность создать удобную для себя систему хранения информации. Например, можно создать отдельные каталоги для хранения текстовых документов, цифровых фотографий, мелодий и т.д.; в каталоге для фотографий объединить фотографии по годам, событиям, принадлелености и т.д. Знание того, какому каталогу принадлежит файл, значительно ускоряет его поиск.

Графическое изображение иерархической файловой структуры называется деревом. В Windows каталоги на разных дисках могут образовывать несколько отдельных деревьев; в Linux каталоги объ­единяются в одно дерево, общее для всех дисков (рис. 2.10). Древовидные иерархические структуры можно изображать вертикально и горизонтально.

Полное имя файла

Чтобы обратиться к нужному файлу, хранящемуся на некотором диске, можно указать путь к файлу - имена всех каталогов от кор­невого до того, в котором непосредственно находится файл.

В операционной системе Windows путь к файлу начинается с логи­ческого имени устройства внешней памяти; после имени каждого подкаталога ставится обратный слэш. В операционной системе Linux путь к файлу начинается с имени единого корневого каталога; после имени каждого подкаталога ставится прямой слэш.

Последовательно записанные путь к файлу и имя файла составляют полное имя файла. Не может быть двух файлов, имеющих одина­ковые полные имена.

Пример полного имени файла в ОС Windows: Е:\изображения\фото\Катунь.jpg

Пример полного имени файла в ОС Linux: /home/methody/text

Задача 1. Пользователь работал с каталогом С:\Физика\Задачи\Кинематика. Сначала он поднялся на один уровень вверх, затем ещё раз поднялся на один уровень вверх и после этого спустился в ка­талог Экзамен, в котором находится файл Информатика.doc. Каков путь к этому файлу?

Решение. Пользователь работал с каталогом С:\Физика\Задачи\Кинематика. Поднявшись на один уровень вверх, пользователь оказался в ка­талоге С:\Физика\Задачи. Поднявшись ещё на один уровень вверх, пользователь оказался в каталоге С:\Физика. После этого пользова­тель спустился в каталог Экзамен, где находится файл. Полный путь к файлу имеет вид: С:\Физика\Экзамен

Задача 2. Учитель работал в каталоге 0:\Уроки\8 класс\Практические работы. Затем перешёл в дереве каталогов на уровень выше, спустился в подкаталог Презентации и удалил из него файл Введение.ppt. Каково полное имя файла, который удалил учитель?

Решение. Учитель работал с каталогом 0:\Уроки\8 класс\Практические работы. Поднявшись на один уровень вверх, он оказался в каталоге Б:\Уроки\8 класс. После этого учитель спустился в каталог Презентации, путь к файлам которого имеет вид: Б:\Уроки\8 класс\Презентации. В этом каталоге он удалил файл Введение.ppt, полное имя которого 0:\Уроки\8 класс\ Презентации \Введение.ppt

Работа с файлами

Создаются файлы с помощью систем программирования и прикладного программного обеспечения.

В процессе работы на компьютере над файлами наиболее часто проводятся следующие операции:

Копирование (создаётся копия файла в другом каталоге или на дру­гом носителе);

Перемещение (производится перенос файла в другой каталог или на другой носитель, исходный файл уничтожается);

Переименование (производится переименование собственно имени файла);

Удаление (в исходном каталоге объект уничтожается).

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

«?» (вопросительный знак) - означает ровно один произвольный символ;

«*» (звездочка) - означает любую (в том числе и пустую) по­следовательность символов произвольной длины.

Например, по маске n*.txt будут найдены все файлы с расширением txt, имена которых начинаются с буквы «n», в том числе и файл n.txt. По маске n?.* будут найдены файлы с произвольными расширениями и двухбуквенными именами, начинающимися с буквы «n».

САМОЕ ГЛАВНОЕ

Основным устройством внешней памяти ПК является жёсткий диск. Если жёсткий диск имеет достаточно большую ёмкость, то его делят на несколько логических разделов. Каждое подключаемое к компьютеру устройство внешней памяти, а так лее каждый логический раздел жёсткого диска имеют логические имена.

Файл - это поименованная область внешней памяти. Имя файла, как правило, состоит из двух частей, разделённых точкой: собственно имени файла и расширения.

Каталог - это поименованная совокупность файлов и подкатало­гов (вложенных каталогов). Каталог самого верхнего уровня называется корневым каталогом.

Файловая структура диска - это совокупность файлов на диске и взаимосвязей между ними. Файловые структуры бывают простыми и многоуровневыми (иерархическими).

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

sites.google.com

§11. О файлах и файловых структурах

Основные темы параграфа:

что такое файл;

имя файла;

логические диски;

файловая структура диска;

путь к файлу, полное имя файла;

таблица размещения файлов на диске.

Что такое файл

Информация на внешних носителях хранится в виде файлов. Работа с файлами является очень важным видом работы на компьютере. В файлах хранится все: и программ­ное обеспечение, и информация, необходимая для пользова­теля. С файлами, как с деловыми бумагами, постоянно при­ходится что-то делать: переписывать их с одного носителя на другой, уничтожать ненужные, создавать новые, разы­скивать, переименовывать, раскладывать в том или другом порядке и пр.

Файл - это информация, хранящаяся на внешнем носителе и объединенная общим именем.

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

Любому пользователю, работающему на компьютере, приходится иметь дело с файлами. Даже для того, чтобы по­играть в компьютерную игру, нужно узнать, в каком файле хранится ее программа, суметь отыскать этот файл и ини­циализировать работу программы.

Работа с файлами на компьютере производится с помо­щью файловой системы. Файловая система - это функцио­нальная часть ОС, обеспечивающая выполнение операций над файлами.

Чтобы найти нужный файл, пользователю должно быть известно: а) какое имя у файла; б) где хранится файл1.

Имя файла

Практически во всех операционных системах имя файла составляется из двух частей, разделенных точкой. Например:myprog.pas

Слева от точки находится собственно имя файла (myprog). Следующая за точкой часть имени называется расши­рением файла (pas). Обычно в именах файлов употребляются латинские буквы и цифры. В большинстве ОС максимальная длина расширения - 3 символа. Кроме того, имя файла мо­жет и не иметь расширения. В операционной системе Win­dows в именах файлов допускается использование русских букв; максимальная длина имени - 255 символов.

Расширение указывает, какого рода информация хранит­ся в данном файле. Например, расширение txt обычно обо­значает текстовый файл (содержит текст); расширение рсх - графический файл (содержит рисунок), zip или гаг - архивный файл (содержит архив - сжатую информацию), pas - программу на языке Паскаль.

Логические диски

На одном компьютере может быть несколько дисково­дов - устройств работы с дисками. Каждому дисководу при­сваивается одно буквенное имя (после которого ставится двоеточие), например А:, В:, С:. Часто на персональных компьютерах диск большой емкости, встроенный в систем­ный блок (его называют жестким диском), делят на разделы. Каждый из таких разделов называется логическим диском, и ему присваивается имя С:, D:, Е; и т. д. Имена А: и В: обычно относятся к сменным дискам малого объема - гиб­ким дискам (дискетам). Их тоже можно рассматривать как имена дисков, только логических, каждый из которых пол­ностью занимает реальный (физический) диск. Следователь­но, А:, В:, C:, D: - это всё имена логических дисков,

Имя логического диска, содержащего файл, является пер­вой «координатой», определяющей место расположения файла.

Файловая структура диска

Вся совокупность файлов на диске и взаимосвязей между ними называется файловой структурой. Различные ОС мо­гут поддерживать разные организации файловых структур. Существуют две разновидности файловых структур: простая, или одноуровневая, и иерархическая - многоуровневая.

Одноуровневая файловая структура - это простая по­следовательность фай лов. Для отыскания файла на диске до­статочно указать лишь имя файла. Например, если файл tetris.exe находится на диске А:, то его «полный адрес» выгля­дит так:

Операционные системы с одноуровневой файловой струк­турой используются на простейших учебных компьютерах, оснащенных только гибкими дисками.

Многоуровневая файловая структура - древовидный (иерархический) способ организации файлов на диске. Для облегчения понимания этого вопроса воспользуемся анало­гией с традиционным «бумажным» способом хранения ин­формации. В такой аналогии файл представляется как неко­торый озаглавленный документ (текст, рисунок) на бумаж­ных листах. Следующий по величине элемент файловой структуры называется каталогом. Продолжая «бумажную» аналогию, каталог будем представлять как папку, в которую можно вложить множество документов, т. е, файлов. Ката­лог также получает собственное имя (представьте, что оно написано на обложке папки).

Каталог сам может входить в состав другого, внешнего по отношению к нему каталога. Это аналогично тому, как пап­ка вкладывается в другую папку большего размера. Таким образом, каждый каталог может содержать внутри себя мно­жество файлов и вложенных каталогов (их называют подка­талогами). Каталог самого верхнего уровня, который не вло­жен ни в какой другой каталог, называется корневым ката­логом.

В операционной системе Windows для обозначения поня­тия «каталог» используется термин 4папка».

Графическое изображение иерархической файловой структуры называется деревом.

На рис. 2.9 имена каталогов записаны прописными буква­ми, а файлов - строчными. Здесь в корневом каталоге име­ются две папки: IVANOV и PETROV и один файл fin.com. Папка IVANOV содержит в себе две вложенные папки PROGS и DATA. Папка DATA - пустая; в папке PROGS имеются три файла и т. д, На дереве корневой каталог обыч­но изображается символом \.

Путь к файлу

А теперь представьте, что вам нужно найти определенный документ. Для этого надо знать ящик, в котором он находит­ся, а также «путь» к документу внутри ящика: всю последо­вательность папок, которые нужно открыть, чтобы до­браться до искомых бумаг.

Второй координатой, определяющей место положения файла, является путь к файлу на диске. Путь к файлу - это последовательность, состоящая из имен каталогов» начиная от корневого и заканчивая тем, в котором непосредственно хранится файл.

Вот всем знакомая сказочная аналогия понятия «путь к файлу «На дубе висит сундук, в сундуке - заяц, в зайце - утка, в утке - яйцо, в яйце - игла, на конце которой смерть Кощеева».

Последовательно записанные имя логического диска, путь к файлу и имя файла составляют полное имя файла.

Если представленная на рис. 2.9 файловая структура хра­нится на диске С:, то полные имена некоторых входящих в нее файлов в символике операционных систем MS-DOS и Windows выглядят так:

Таблица размещения файлов

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

На рис. 2.10 показан пример отображения на экране компьютера дерева каталогов на логическом диске Е: (левое окно).

В правом окне представлено содержимое папки ARCON. Это множество файлов различных типов. Отсюда, например, понятно, что полное имя первого в списке файла следующее:

Из таблицы можно получить дополнительную информа­цию о файлах. Например, файл dos4gw.exe имеет размер 254 556 байтов и был создан 31 мая 1994 года в 2 часа 00 мин.

Найдя в таком списке запись о нужном файле, применяя команды ОС, пользователь может выполнить с ним различ­ные действия: инициализировать программу, содержащуюся в файле; удалить, переименовать, скопировать файл. Выпол­нять все эти операции вы научитесь на практическом заня­тии.

Коротко о главном

Файл - это информация, хранящаяся на внешнем носи­теле и объединенная общим именем.

Файловая система - это функциональная часть ОС, обес­печивающая выполнение операций с файлами.

Имя файла состоит из собственно имени и расширения. Расширение указывает на тип информации в файле (тип файла).

Файловая структура диска - это совокупность файлов на диске и взаимосвязей между ними. Файловые структуры бы­вают простыми и многоуровневыми (иерархическими).

Каталог - это поименованная совокупность файлов и под­каталогов (вложенных каталогов). Каталог самого верхнего уровня называется корневым. Он не вложен ни в какие ката­логи.

Полное имя файла состоит из имени диска, пути к файлу на диске и имени файла.

Вопросы и задания

1.Как называется операционная система» используемая в вашем компьютерном классе?

2.Какую файловую структуру использует операционная система на ваших компьютерах (простую, многоуровневую)?

3.Сколько физических дисководов работает на ваших компьюте­рах? Сколько логических дисков находится на физических ди­сках и какие имена они имеют в операционнсй системе?

4.Каким правилам подчиняются имена файлов в вашей ОС?

5.Что такое путь к файлу на диске, полное имя файла?

6.Научитесь (под руководством учителя) просматривать на экра­не каталоги дисков на ваших компьютерах.

7.Научитесь инициализировать работу программ из программ­ных файлов (типа exe, com).

8.Научитесь выполнять основные файловые операции в исполь­зуемой ОС (копирование, перемещение, удаление, переимено­вание файлов).

txtbooks.ru

Файл и файловая структура. Операции с файлами

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

Понятие файла и файловой структуры

Для начала нужно определиться с самыми главными терминами и понятиями. Ключевым здесь является понятие файла, которое и определяет механизмы работы системы в программном плане.

Итак, файл – это объект, содержащий определенную информацию. Чтобы понять, что такое файлы данных, файловые структуры и их взаимодействие, лучше привести пример из жизни, скажем, сравнить эти понятия с обычной книгой.

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

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

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

Файлы (объекты), не соответствующие ни операционной системе, ни какой-либо программе, открыть будет не так просто. Грубо говоря, ни одна «операционка» не поймет, какое именно средство для открытия нужно запустить. В лучшем случае будет предложено выбрать соответствующую программу самому из предоставляемого списка вероятных решений.

Файлы и файловая структура: информатика на заре развития компьютерных технологий

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

С появлением уникального детища Norton Commander такая необходимость не то чтобы отпала (некоторые команды все равно прописывать было нужно), а, скорее, уменьшилась. Именно этот файловый менеджер, исходя из нашего примера, и можно назвать оглавлением, поскольку все данные, хранящиеся на жестком диске или внешнем носителе, были четко структурированы.

Файлы и папки

Как уже понятно, в любой системе существует несколько основных видов объектов. Файл и файловая структура, кроме основного элемента (файла), неотделимы от понятия папки. Иногда данный термин обозначается как «каталог» или «директория». По сути, это раздел, в котором хранятся отдельные компоненты.

В принципе, не говоря о книжных страницах, наиболее четко понятие папки можно выразить, если посмотреть на какой-нибудь комод с множеством ящиков, в которых что-то лежит. Вот это «что-то» и есть файлы, а ящики – директории.

Простейшие примеры поиска файлов

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

Однако для более точного поиска иногда нужно знать, где именно располагается искомый файл. Грубо говоря, необходимо выбрать определенный ящик в комоде, где находится нужный нам предмет. Сам поиск производится при помощи стандартного средства в файловом менеджере, но можно использовать и сочетание вроде Ctrl + F, которое вызывает поисковую строку.

Что такое файловая система?

Файлы и файловые структуры нельзя представить себе без понимания файловой системы. Заметьте, файловая структура и файловая система – не одно и то же. Структура – это основной вид упорядочивания файлов, если хотите, систематизации данных, а вот файловая система – метод, определяющий работу структуры. Иными словами, это принцип обработки данных в плане их размещения на жестком диске или любом другом носителе информации.

Сегодня файловых систем можно найти достаточно много. К примеру, наиболее известными для Windows с момента развития компьютерной техники стали системы FAT с архитектурой 8, 16, 32 и 64 бита, NTFS и ReFS. Файловая система, структура файла, способ упорядочивания тесно связаны между собой. Но теперь несколько слов о самих системах.

Не говоря о технических подробностях, следует отметить, что основное различие между ними состоит только в том, что FAT имеет больший размер кластера для хранения и ускоренного доступа к файлам небольшого объема, а NTFS и ReFS оптимизированы для больших массивов данных и быстрого доступа к ним на максимальной скорости считывания информации с жесткого диска.

Операции с файлами

Теперь посмотрим с другой стороны на то, что представляет собой файловая структура операционных систем. Операции с файлами, которые предусмотрены в любой «операционке», в общем-то, особо и не различаются.

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

Архивация данных

Среди специфичных функций в первую очередь можно выделить сжатие файлов и папок, называемое архивацией, а также обратный процесс – извлечение данных из архива. На момент разработки системы DOS создание архивных типов данных в основном сводилось к использованию стандарта ARJ.

Но с появлением технологий ZIP-архивирования такие процессы получили новое развитие. Впоследствии был создан и универсальный архиватор RAR. Эти технологии сейчас представлены в любой «операционке» даже без необходимости устанавливать дополнительное ПО. Файловая структура ОС операции с файлами в этом ракурсе трактуется как виртуальносжатие. По сути, технологии сжатия просто дают системе указание на то, чтобы она определяла не искомый размер, а меньший. Сам информационный объем файла или папки при архивации не меняется.

Управление отображением объектов

Понятия «файловая структура», «структура файла» и т. д. следует рассматривать еще и с точки зрения возможности видения самих объектов. Не секрет, что практически все пользователи современных ПК сталкивались с термином «скрытые файлы и папки».

Что это такое? Означает это только то, что в системе установлено ограничение на отображение некоторых объектов (например, системных файлов и папок, чтобы пользователь их случайно не удалил). То есть в физическом плане они с жесткого диска никуда не деваются, просто файловый менеджер их не видит.

Чтобы отобразить все скрытые объекты, в том же «Проводнике» следует использовать меню «Вид», где на соответствующей вкладке ставится галочка в строке отображения всех скрытых папок и файлов. После включения такого вида объекты будут иметь полупрозрачные иконки.

С поиском скрытых объектов тоже могут возникнуть трудности. При вводе имени файла или его расширения даже с указанием конкретного местоположения при отключенном отображении таких объектов результата не будет (система ведь не видит их). Для того чтобы их найти, нужно в начале и в конце имени корневой папки вводить символ %. Например, для поиска директории AppData, которая является скрытой и располагается в локальной папке настроек конкретного пользователя, следует использовать строку поиска %USERPROFILE%\AppData. Только в этом случае файл и файловая структура в целом получат ключ к взаимосвязи.

Заключение

Вот кратко и все, что касается понимания основных терминов. В принципе, понять, что такое файл и файловая структура, на элементарных примерах не так уж и сложно. Напоследок, если хотите, можно определить эти термины как кирпичи и стену, из которых она складывается. Кирпич – это файл, стена – файловая структура, где каждый кирпичик занимает строго определенное, положенное только ему место.

Специально не рассматривались некоторые технические аспекты или классические определения, принятые в программировании и компьютерных технологиях, чтобы читателю материал был понятен на элементарном уровне.

fb.ru

Файловая структура (система). Представление о файле и каталоге

Методическая разработка урока

Одно из назначений компьютера – это долговременное хранение данных, которые чаще всего сохраняются на жестком диске. Выясним, каким образом организовано их хранение.

Данные – это любая информация. Данными можно назвать текст, рисунок, таблицу. Сохраняя определенные данные на диске, мы предполагаем, что когда-нибудь они нам понадобятся снова. Но как их потом найти? Необходимо знать, где были сохранены эти данные, а также имя, по которому к ним обращаться. Для сохранения адреса и имени области диска, где хранятся конкретные данные, было введено понятие файла. Итак, файл – это именованное место на диске для хранения данных определенного типа.

Файлов может быть слишком много и они могут находиться в разных местах жесткого диски. Однако человеку ориентироваться в беспорядочном размещении файлов вряд ли будет удобно. Для того, чтобы упорядочить и систематизировать файлы, был придуман особый тип файла – каталог, который представляет собой список ссылок на файлы с данными или другие каталоги. Если в операционной системе открыть каталог, то можно увидеть файлы и другие каталоги, которые как бы в нем хранятся. На самом деле эти вложенные файлы могут находиться в разных местах жесткого диска, но операционная система покажет их вместе.

Часто каталоги называют также директориями или папками. Все три термина обозначают одно и тоже.

Получаем дерево?!

Итак, каждый файл в операционной системе должен находиться в каталоге, а также, каждый каталог (за одним исключением) должен находиться в другом каталоге. Исключением является так называемый “корневой каталог”, с которого все начинается. Кроме того, не может быть ситуации, когда один каталог ссылается на второй, а тот, обратно, на первый.

Описанное выше можно представить в виде дерева, у которого ствол и ветви являются каталогами, а листья – файлами. От любой ветви может отрастать ветка следующего порядка и/или листья, т.е. любой каталог может содержать вложенные каталоги и/или файлы с данными.

Можно сделать следующий вывод: файловая система в операционной системе – это логическая структура файлов и каталогов. Структуру, описанную выше, часто называют иерархической или древовидной. Она характерна для большинства операционных систем. Однако существуют и некоторые отличия. Так в операционных системах, основанных на ядре Linux, существует лишь один корневой каталог. Обозначается он символом слеша (/) и содержит больше десятка вложенных каталогов. В ОС семейства Windows корневых каталогов столько, сколько разделов жесткого диска доступно системе.

Каждому файлу – адрес!

Из вышеописанной структуры можно заключить, что у каждого файла и каталога должен быть свой адрес.

На предыдущем рисунке можно видеть, что каталог less находиться в каталоге sasha. Тот в свою очередь в каталоге home, который находится непосредственно в корневом каталоге. Адрес записывается следующим образом: сначала пишется корневой каталог «/», и далее указываются каталоги, начиная с самого верхнего (родительского) и заканчивая самым нижним (дочерним), разделяемые между собой все тем же «/». В нашем примере адрес каталога less, будет выглядеть так: /home/sasha/less. Адрес и имя файла, формируют его полное имя. При этом следует запомнить правило: в операционной системе не может быть двух файлов (или каталогов) с одинаковыми полными именами.

Адресация, описанная выше, является абсолютной (т.е. адрес записывается, начиная с корневого каталога). Помимо абсолютной нередко используют относительную адресацию, где запись адреса начинается не с корневого каталога, а относительно текущего (того, который открыт в данный момент). Например, если мы, находясь в каталоге sasha, захотим перейти в каталог vaniy, то следует написать такой адресный путь: ../vaniy. Здесь две точки обозначают переход на уровень выше (в данном случае каталог /home). Если из каталога sasha потребуется перейти в каталог less, то достаточно будет указать просто имя этого каталога less; хотя более правильным будет такой вариант: ./less. Одна точка обозначает текущий каталог.

Файловый менеджер – ваш помощник

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


В графической оболочке GNOME по умолчанию таким менеджером/браузером является Nautilus. Запустить его можно через Главное меню (Приложения -> Система -> Обозреватель файлов) или другими способами.

Опишем структуру окна данного браузера и основные принципы навигации в нем.

В окне Наутилуса можно выделить пять частей. Первая, – строка меню (содержит пункты Файл, Правка, Вид и т.д.) - где осуществляется доступ к командам браузера. Вторая – панель инструментов (кнопки Назад, Вперед, Вверх и т.д.) - содержит наиболее используемые команды меню, реализованные в виде кнопок. Третья – адресная строка – содержит поле, отображающее адрес текущего каталога. Четвертая (слева) – это боковая панель – в данном случае отображающее дерево каталогов. И пятая (самая большая часть) – это область просмотра – отображает содержимое текущего каталога.

Остановимся на боковой панели, отображающей дерево каталогов (помимо этого панель может быть настроена на отображения сведений, заметок и истории текущего каталога). Знак перевернутого треугольника, расположенный у каталога обозначает, что в нем находятся другие каталоги и/или файлы. Если нажать на этот знак, то отобразятся вложенные в него каталоги. Повторное нажатие закроет структуру каталога. Если щелкнуть левой кнопкой мыши непосредственно по каталогу, то его содержимое отобразится в области просмотра.

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

Помимо Наутилуса существует много других файловых менеджеров. Например, в графической оболочке KDE по умолчанию им является Konqueror.

Навигация и создание файлов

Файлы и папки можно создавать несколькими способами. Одним из них является создание с помощью контекстного меню. Для этого необходимо щелкнуть в пустое место текущего каталога правой кнопкой мыши и в контекстном меню выбрать пункт Создать папку или Создать документ (в последнем случае появляется подменю, где выбирается тип документа). После этого вводится имя объекта.

Если понадобится переименовать объект, то это можно сделать следующими способами: выделить папку/файл, затем щелкнуть по нему левой кнопкой мыши (не путать с двойным кликом, когда щелчки происходят быстро друг за другом); выделить папку/файл, затем нажать на клавиатуре клавишу F2;

кликнуть папку/файл правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Переименовать.

После любого из этих трех действий следует ввести новое имя файла и нажать Enter.

Практическая работа. Создание файлов и каталогов

Задание. Создайте в своем домашнем каталоге следующую файловую структуру.


Обозначения: эллипс – каталог, прямоугольник – файл.

Вопросы

  1. Почему файловую систему называют древовидной и иерархической?
  2. Что такое файл?
  3. Как обозначается корневой каталог в Linux? В каком каталоге по умолчанию содержатся каталоги пользователей?
  4. Что такое абсолютный адрес? относительный адрес? В каких случаях более уместно употреблять относительный адрес?

Выводы

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

Цель урока: Дать представление о файловой системе и объяснить принцип ее работы.

Задачи урока:

Образовательные: познакомить учащихся с поняти ями « файл», «файловые структуры» , закрепить полученные знания;

Развивающие: развивать творческую и мыслительную деятельность учащихся на уроке посредством анализа демонстрационных примеров, способность к обобщению, быстрому переключению, способствовать формированию навыков коллективной и самостоятельной работы, умения чётко и ясно излагать свои мысли;

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

Форма организации урока: фронтальная.

Метод проведения урока: словесный, наглядно-демонстрационный.

Тип урока: комбинированный.

Аппаратное обеспечение: мультимедийный проектор, презентация.

План урока:

1. Организационный момент (2 мин).

2. Объяснение нового материала (15 мин).

3. Закрепление нового материала (5 мин).

4. практическая работа (20 мин).

5. Постановка домашнего задания (1 мин).

6. Подведение итогов (2 мин).

Ход урока:

1. Организационный момент: Контроль отсутствующих. Формулировка темы и целей урока.

Сегодня на уроке мы узнаем:

что такое файл;

имя файла;

логические диски;

файловая структура диска;

путь к файлу, полное имя файла.

2. Объяснение нового материала:

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

Файл (англ. file ) – последовательность числа байтов, обладающая уникальным собственным именем на машинных носителях.

Информация на внешних носителях хранится в виде файлов. Работа с файлами является очень важным видом работы на компьютере. В файлах хранится все: и программное обеспечение, и информация, необходимая для пользователя. С файлами, как с деловыми бумагами, постоянно приходится что-то делать: переписывать их с одного носителя на другой, уничтожать ненужные, создавать новые, разыскивать, переименовывать, раскладывать в том или другом порядке и пр.

Файл – это информация, хранящаяся на внешнем носителе и объединенная общим именем.

Для прояснения смысла этого понятия удобно воспользоваться следующей аналогией: сам носитель информации (диск) подобен книге. Мы говорили о том, что книга – это внешняя память человека, а магнитный диск – внешняя память компьютера. Книга состоит из глав (рассказов, разделов), каждый из которых имеет название. Также и файлы имеют свои названия. Их называют именами файлов. В начале или в конце книги обычно присутствует оглавление – список названий глав. На диске тоже есть такой список-каталог, содержащий имена хранимых файлов. Каталог можно вывести на экран, чтобы узнать, есть ли на данном диске нужный файл.

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

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

Работа с файлами на компьютере производится с помощью файловой системы. Файловая система – это функциональная часть ОС, обеспечивающая выполнение операций над файлами.

Чтобы найти нужный файл, пользователю должно быть известно: а) какое имя у файла; б) где хранится файл.

Практически во всех операционных системах имя файла составляется из двух частей, разделенных точкой. Например: myprog.pas

Слева от точки находится собственно имя файла (myprog) Следующая за точкой часть имени называется расширением файла (pas). Обычно в именах файлов употребляются латинские буквы и цифры. В большинстве ОС максимальная длина расширения - 3 символа. Кроме того, имя файла может и не иметь расширения. В операционной системе Windows в именах файлов допускается использование русских букв; максимальная длина имени – 256 символов, кроме девяти специальных: \ / : * ? “ < > |.

В именовании можно пользоваться пробелами и точками. А заканчивался файл из трех символов, составляющих так званое расширение.

Расширение файла – хаотичная последовательность символов, добавляемых в конец.

Тип файла

Расширение

Исполняемые программы

exe, com

Текстовые файлы

txt, rtf, doc

Графические файлы

bmp, gif, jpg, png, pds

Web-страницы

htm, html

Звуковые файлы

wav, mp3, midi, kar, ogg

Видео файлы

avi, mpeg

Код (текст) программы на языках программирования

bas, pas, cpp

Расширение указывает, какого рода информация хранится в данном файле.

Инициализация программы происходит путем записи ее в оперативную память и перехода работы процессора к ее исполнению.

На одном компьютере может быть несколько дисководов – устройств работы с дисками. Каждому дисководу присваивается однобуквенное имя (после которого ставится двоеточие), например А:, В:, С:. Часто на персональных компьютерах диск большой емкости, встроенный в системный блок (его называют жестким диском), делят на разделы. Каждый из таких разделов называется логическим диском, и ему присваивается имя С:, D:, Е: и т. д. Имена А: и В: обычно относятся к сменным дискам малого объема – гибким дискам (дискетам). Их тоже можно рассматривать как имена дисков, только логических, каждый из которых полностью занимает реальный (физический) диск. Следовательно, А:, В:, С:, D: – это всё имена логических дисков.

Имя логического диска, содержащего файл, является первой «координатой», определяющей место расположения файла.

Вся совокупность файлов на диске и взаимосвязей между ними называется файловой структурой. Различные ОС могут поддерживать разные организации файловых структур.

Виды файловой структуры:

1) Одноуровневая – последовательность имен файлов, используема для дисков с небольшим количеством файлов. Одноуровневая файловая структура – это простая последовательность файлов. Для отыскания файла на диске достаточно указать лишь имя файла. Например, если файл tetris.ехе находится на диске А:, то его «полный адрес» выглядит так: А:\tetris.ехе

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

2) Многоуровневая или иерархическая – древовидная структура, служащая для хранения тысяч файлов.

К функциям обслуживания файловой структуры относятся такие операции (естественно, происходящие в среде какой-либо ОС):

    создание файлов

    создание каталогов

    удаление файлов и каталогов

В операционной системе Windows для обозначения понятия «каталог» используется термин «папка».

Каталог может включать множество подкаталогов, в результате чего на дисках образуются разветвленные файловые структуры.

Организация файлов в виде древовидной структуры называется файловой системой . Принцип организации файловой системы - табличный.
То есть, информация о местонахождении файла на диске хранится в таблице размещения файлов (англ.
File Allocation Table, FAT ).

Структура FAT похожа на оглавление книги – операционная система использует ее для быстрого поиска файлов.

Позже была введена FAT32 - усовершенствованная версию FAT. Она могла поддерживать тома, объем которых уже может превышать 2 Гбайт (в отличие от FAT).

Далее появилась более перспективное направление в развитии файловых систем - NTFS ( New Technology File System - файловая система новой технологии), поддерживающая длинные имена файлов и предлагающая надежную систему безопасности данных.

Объем раздела NTFS не ограничен. Также, NTFS экономит место на диске, сжимая его самого, отдельные файлы и каталоги.

В Windows XP применяется и FAT32 и NTFS.

Графическое изображение иерархической файловой структуры называется деревом.

На рис. 2.9 имена каталогов записаны прописными буквами, а файлов – строчными. Здесь в корневом каталоге имеются две папки: IVANOV и РЕТROV и один файл fin.com. Папка IVANOV содержит в себе две вложенные папки PROGS и DАТА. Папка DАТА – пустая; в папке РROGS имеются три файла и т. д. На дереве корневой каталог обычно изображается символом\.

А теперь представьте, что вам нужно найти определенный документ. Для этого надо знать ящик, в котором он находится, а также «путь» к документу внутри ящика: всю последовательность папок, которые нужно открыть, чтобы добраться до искомых бумаг.

Второй координатой, определяющей место положения файла, является путь к файлу на диске. Путь к файлу – это последовательность, состоящая из имен каталогов, начиная от корневого и заканчивая тем, в котором непосредственно хранится файл.

Вот всем знакомая сказочная аналогия понятия «путь к файлу»: «На дубе висит сундук, в сундуке - заяц, в зайце - утка, в утке - яйцо, в яйце - игла, на конце которой смерть Кощеева».

Последовательно записанные имя логического диска, путь к файлу и имя файла составляют полное имя файла.

Если представленная на рис. 2.9 файловая структура хранится на диске С:, то полные имена некоторых входящих в нее файлов в символике операционных систем МS-DOS и Windows выглядят так:

C:\fin.com

C:\IVANOV\PROGS\prog1.pas

C :\ PETROV \ DATA \ task . dat

3. Закрепление нового материала:

1. Что такое файловая система? Файловая система – это функциональная часть ОС, обеспечивающая выполнение операций с файлами.

2. Объясните понятие "файл". Файл – это информация, хранящаяся на внешнем носителе и объединенная общим именем.

3. Какие существуют типы файловых таблиц? FAT , FAT32 и NTFS

4.Что такое расширение файла? Имя файла состоит из собственно имени и расширения. Расширение указывает на тип информации в файле (тип файла).

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

Создание файлов

Создание каталогов

Переименование файлов и каталогов

Копирование, перемещение файлов

Удаление файлов и каталогов

Навигация по файловой системе (проводник) с целью доступа к определенному файлу

Управление атрибутами (свойствами) файлов (скрытие, только чтение и т.д.)

6. Что такое файловая структура диска? Файловая структура диска – это совокупность файлов на диске и взаимосвязей между ними. Файловые структуры бывают простыми и многоуровневыми (иерархическими).

7. Что такое каталог? Каталог – это поименованная совокупность файлов и подкаталогов (вложенных каталогов). Каталог самого верхнего уровня называется корневым. Он не вложен ни в какие каталоги.

8. Из чего состоит полное имя файла? Полное имя файла состоит из имени диска, пути к файлу на диске и имени файла.

4. Практическая работа. Операции с файлами и папками Windows . (раздаточный материал).

5. Постановка домашнего задания: §2.4 , ответить на вопросы в конце параграфа.

6. Подведение итогов: Выставление отметок за урок.

Классификация, структура, характеристики файловых систем!!!

1.Понятие, структура и работа файловой системы.

Файловая система - совокупность (порядок, структура и содержание) организации хранения данных на носителях информации, которая непосредственно представляет доступ к хранимым данным, на бытовом уровне это совокупность всех файлов и папок на диске. Основными "единицами" файловой системы принято считать кластер, файл, каталог, раздел, том, диск.
Совокупность нулей и единиц на носителе информации составляют кластера (минимальный размер места для хранения информации, также их принято называть понятием сектор, размер их кратен 512 байтам).
Файлы - поименованная совокупность байтов, разделенная на сектора. В зависимости от файловой системы, файл может обладать различным набором свойств. Для удобства в работе с файлами используются их (символьные идентификаторы) имена.
Для организации строения файловой системы файлы группируются в каталоги .
Раздел - область диска созданная при его разметке и содержащая один или несколько отформатированных томов.
Том - область раздела с файловой системой, таблицей файлов и областью данных. Один или несколько разделов составляют диск .
Вся информация о файлах хранится в особой области раздела - таблице файлов. Таблица файлов позволяет ассоциировать числовые идентификаторы файлов и дополнительную информацию о них (дата изменения, права доступа, имя и т. д.) с непосредственным содержимым файла, хранящимся в другой области раздела.

MBR (Master Boot Record) специальная область расположенная в начале диска - содержащая необходимую для BIOS информацию для загрузки операционной системы с жесткого диска.
Таблица разделов (partition table) также расположена в начале диска, ее задача - хранить информацию о разделах: начало, длина, загрузка. На загрузочном разделе расположен загрузочный сектор (boot sector), хранящий программу загрузки операционной системы.

Отсчет начинается от MBR (от сектора с номером 0) для всех основных (primary) разделов, как для обычных, так и для расширенного, и только для основных.
Все обычные логические (not extended logical) разделы задаются сдвигом относительно начала того расширенного раздела, в котором они описаны.
Все расширенные логические (extended logical) разделы задаются сдвигом относительно начала основного расширенного раздела (extended primary).

Процесс загрузки операционной системы выглядит следующим образом:
При включении компьютера управление процессором получает BIOS ,идет загрузка (boot) с винчестера, подгружается в оперативную память компьютера первый сектор диска (MBR) и передается ему управление).

В MBR может быть записан как "стандартный" загрузчик,

так и загрузчики типа LILO/GRUB.

Стандартный загрузчик находит в таблице основных разделов первый раздел с флагом bootable (загрузочный), считывает его первый сектор (boot-сектор) и передает управление коду, записанному в этом boot-секторе. Если вместо стандартного загрузчика MBR стоит другой, то он не смотрит на флаг bootable, может загружать с любого раздела (прописанных в его настройках).

Например для загрузки операционной системы Windows NT/2k/XP/2003 в boot-секторе записывается код, загружающий с текущего раздела в память основной загрузчик (ntloader).
Для каждой файловой системы FAT16/FAT32/NTFS используется свой загрузчик. В корне раздела обязательно должен присутствовать файл ntldr. Если вы видете при попытке загрузить Windows сообщение "NTLDR is missing", то это как раз тот случай, когда файл ntldr отсутствует. Также для нормальной работы ntldr возможно нужны файлы bootfont.bin, ntbootdd.sys, ntdetect.com и правильно написанный boot.ini.

Пример boot.ini

C:\boot.ini

timeout=8
default=C:\gentoo.bin

C:\gentoo.bin="Gentoo Linux"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP (32-bit)" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Windows XP (64-bit)" /fastdetect /usepmtimer

Пример конфигурационного файла grub.conf

#grub.conf generated by anaconda
#
#Note that you do not have to rerun grub after making changes to this file
#
#NOTICE: You have a /boot partition. This means that
#all kernel and initrd paths are relative to /boot/, eg.
#root (hdO.O)
#kernel /vmlinuz-version ro root=/dev/sda2
#initrd /initrd-version.img
#boot=/dev/sda default=0 timeout=5
splashimage=(hdO,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux server (2.6.18-53.el 5)
root (hdO.O)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet-
initrd /initrd-2.6.18-53.el5.img

Структура файла lilo.conf

# LILO configuration file generated by "liloconfig"
//Секция описания глобальных параметров
# Start LILO global section
//Место, куда записан Lilo. В данном случае это MBR
boot = /dev/hda
//Сообщение, которое выводится при загрузке
message = /boot/boot_message.txt
//Вывод приглашения
prompt
//Time Out на выбор операционной системы
timeout = 1200
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# VESA framebuffer console @ 800x600x256
//Выбор видеорежима отображения меню
vga = 771
# End LILO global section
//Секция описания параметров загрузки windows
# DOS bootable partition config begins
other = /dev/hda1
label = Windows98
table = /dev/hda
# DOS bootable partition config ends
//Секция описания параметров загрузки QNX
# QNX bootable partition config begins
//Путь к операцционной системе
other = /dev/hda2
label = QNX
table = /dev/hda
# QNX bootable partition config ends
//Секция описания параметров загрузки Linux
# Linux bootable partition config begins
//Путь к образу ядра
image = /boot/vmlinuz
root = /dev/hda4
label = Slackware
read-only
# Linux bootable partition config ends


2.Наиболее известные файловые системы.

  • Advanced Disc Filing System
  • AdvFS
  • Be File System
  • CSI - DOS
  • Encrypting File System
  • Extended File System
  • Second Extended File System
  • Third Extended File System
  • Fourth Extended File System
  • File Allocation Table (FAT)
  • Files - 11
  • Hierarchical File System
  • HFS Plus
  • High Perfomance File System (HPFS)
  • ISO 9660
  • Journaled File System
  • Macintosh File System
  • MINIX file system
  • MicroDOS
  • Next3
  • New Implementation of a Log-structured F (NILFS)
  • Novell Storage Services
  • New Technology File System (NTFS)
  • Protogon
  • ReiserFS
  • Smart File System
  • Squashfs
  • Unix File System
  • Universal Disk Format (UDF)
  • Veritas File System
  • Windows Future Storage (WinFS)
  • Write Anywhere File Layout
  • Zettabyte File System (ZFS)

3.Основные характеристики файловых систем.

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

Максимальный (минимальный) размер тома;
- Максимальное (минимальное) количество файлов в корневом каталоге;
- Максимальное количество файлов в некорневом каталоге;
- Безопасность на уровне файлов;
- Поддержка длинных имен файлов;
- Самовосстановление;
- Сжатие на уровне файлов;
- Ведение журналов транзакций;

4.Краткое описание наиболее распространенных файловых систем FAT, NTFS, EXT.

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

FAT (file allocation table) означает «таблица размещения файлов».
В файловой системе FAT логическое дисковое пространство любого логического диска делится на две области:
- системную область;
- область данных.
Системная область создается при форматировании и обновляется при манипулировании файловой структурой. Область данных содержит файлы и каталоги, подчиненные корневому, и доступна через пользовательский интерфейс. Системная область состоит из следующих компонентов:
- загрузочной записи;
- зарезервированных секторов;
- таблицы размещения файлов (FAT);
- корневого каталога.
Таблица размещения файлов представляет собой карту (образ) области данных, в которой описывается состояние каждого участка области данных. Область данных разбивается на кластеры. Кластер – один или несколько смежных секторов в логическом дисковом адресном пространстве (только в области данных). В таблице FAT кластеры, принадлежащие одному файлу (некорневому каталогу), связываются в цепочки. Для указания номера кластера в системе управления файлами FAT16 используется 16-битовое слово, следовательно, можно иметь до 65536 кластеров.
Кластер – минимальная адресуемая единица дисковой памяти, выделяемая файлу или некорневому каталогу. Файл или каталог занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что приведет к заметной потере дискового пространства при большом размере кластера.
Так как FAT используется при доступе к диску очень интенсивно, она загружается в ОЗУ и находится там максимально долго.
Корневой каталог отличается от обычного каталога тем, что он размещается в фиксированном месте логического диска и имеет фиксированное число элементов. Для каждого файла и каталога в файловой системе хранится информация в соответствии со следующей структурой:
- имя файла или каталога – 11 байт;
- атрибуты файла – 1 байт;
- резервное поле – 1 байт;
- время создания – 3 байта;
- дата создания – 2 байта;
- дата последнего доступа – 2 байта;
- зарезервировано – 2 байта;
- время последней модификации – 2 байта;
- номер начального кластера в FAT – 2 байта;
- размер файла – 4 байта.
Структура системы файлов является иерархической.

Файловая система FAT32.
FAT32 является полностью независимой 32-разрядной файловой системой и содержит многочисленные усовершенствования и дополнения по сравнению с FAT16. Принципиальное отличие FAT32 заключается в более эффективном использовании дискового пространства: FAT32 использует кластеры меньшего размера, что приводит к экономии дискового пространства.
FAT32 может перемещать корневой каталог и использовать резервную копию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволяет создавать копии критических структур данных, что повышает устойчивость дисков к нарушениям структуры FAT по сравнению с предыдущими версиями. Корневой каталог представляет собой обычную цепочку кластеров, поэтому может находиться в произвольном месте диска, что снимает ограничение на размер корневого каталога.


Файловая система NTFS.
Файловая система NTFS (New Technology File System) содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем. С точки зрения пользователей файлы по-прежнему хранятся в каталогах, но работа на дисках большого объема в NTFS происходит намного эффективнее:
- имеются средства для ограничения доступа к файлам и каталогам;
- введены механизмы, существенно повышающие надежность файловой системы;
- сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров.

Основные характеристики файловой системы NTFS:
- надежность. Высокопроизводительные компьютеры и системы совместного использования должны обладать повышенной надежностью, для этой цели введен механизм транзакций, при котором ведется журналирование файловых операций;
- расширенная функциональность. В NTFS введены новые возможности: усовершенствованная отказоустойчивость, эмуляция других файловых систем, мощная модель безопасности, параллельная обработка потоков данных, создание файловых атрибутов, определенных пользователем;
- поддержка стандарта POSIX. К числу базовых средств относятся необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм альтернативных имен, позволяющий ссылаться на один и тот же файл по нескольким именам;
- гибкость. Распределение дискового пространства отличается большой гибкостью: размер кластера может изменяться от 512 байт до 64 Кбайт.
NTFS хорошо работает с большими массивами данных и большими томами. Максимальный размер тома (и файла) – 16 Эбайт. (1 Эбайт равен 2**64 или 16000 млрд. гигабайт.) Количество файлов в корневом и некорневом каталогах не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «бинарным деревом», время поиска файлов в NTFS не связано линейной зависимостью с их количеством.
Система NTFS обладает некоторыми средствами для самовосстановления и поддерживает различные механизмы проверки целостности системы, включая ведение журнала транзакций, позволяющий отследить по системному журналу файловые операции записи.
Файловая система NTFS поддерживает объектную модель безопасности и рассматривает все тома, каталоги и файлы как самостоятельные объекты NTFS. Права доступа к томам, каталогам и файлам зависит от учетной записи пользователя и той группы, к которой он принадлежит.
Файловая система NTFS обладает встроенными средствами сжатия, которые можно применять к томам, каталогам и файлам.

Файловая система Ext3.
Файловая система ext3 может поддерживать файлы размером до 1 ТБ. С Linux-ядром 2.4 объём файловой системы ограничен максимальным размером блочного устройства, что составляет 2 терабайта. В Linux 2.6 (для 32-разрядных процессоров) максимальный размер блочных устройств составляет 16 ТБ, однако ext3 поддерживает только до 4 ТБ.
Ext3 имеет хорошую совместимость с NFS и не имеет проблемы с производительностью при дефиците свободного дискового пространства.Еще одно достоинство ext3 происходит из того, что она основана на коде ext2. Дисковый формат ext2 и ext3 идентичен; из этого следует, что при необходимости ext3 filesystem можно монтировать как ext2 без каких либо проблем. И это еще не все. Благодаря факту, что ext2 и ext3 используют идентичные метаданные, имеется возможность оперативного обновления ext2 в ext3.
Надежность Ext3
В дополнение к ext2-compatible, ext3 наследует другие преимущества общего формата metadata. Пользователи ext3 имеют в своем распоряжении годами проверенный fsck tool. Конечно, основная причина перехода на journaling filesystem - отказ от необходимости периодических и долгих проверок непротиворечивости метаданных на диске. Однако "журналирование" не способно защитить от сбоев ядра или повреждения поверхности диска (или кое-чего подобного). В аварийной ситуации вы оцените факт преемственности ext3 от ext2 с ее fsck.
Журнализация в ext3.
Теперь, когда имеется общее понимание проблемы, посмотрим, как ext3 осуществляет journaling. В коде журнализации для ext3 используется специальный API, называемый Journaling Block Device layer или JBD. JBD был разработан для журнализации на любых block device. Ext3 привязана к JBD API. При этом код ext3 filesystem сообщает JBD о необходимости проведения модификации и запрашивает у JBD разрешение на ее проведение. Журналом управляет JBD от имени драйвера ext3 filesystem. Такое соглашение очень удобно, так как JBD развивается как отдельный, универсальный объект и может использоваться в будущем для журналирования в других filesystems.
Защита данных в Ext3
Теперь можно поговорить о том, как ext3 filesystem обеспечивает журнализацию и data, и metadata. Фактически в ext3 имеются два метода гарантирования непротиворечивости.
Первоначально ext3 разрабатывалась для журналирования full data и metadata. В этом режиме (называется "data=journal" mode), JBD журналирует все изменения в filesystem, связанные как с data, так и с metadata. При этом JBD может использовать журнал для отката и восстановления metadata и data. Недостаток "полного" журналирования в достаточно низкой производительности и расходе большого объема дискового пространства под журнал.
Недавно для ext3 был добавлен новый режим журналирования, который сочетает высокую производительность и гарантию непротиворечивости структуры файловой системы после сбоя (как у "обычных" журналируемых файловых систем). Новый режим работы обслуживает только metadata. Однако драйвер ext3 filesystem по-прежнему отслеживает обработку целых блоков данных (если они связаны с модификацией метаданных), и группирует их в отдельный объект, называемый transaction. Транзакция будет завершена только после записи на диск всех данных. "Побочный" эффект такой "грубой" методики (называемой "data=ordered" mode) - ext3 обеспечивает более высокую вероятность сохранности данных (по сравнению с "продвинутыми" журналируемыми файловыми системами) при гарантии непротиворечивости metadata. При этом происходит журналирование изменений только структуры файловой системы. Ext3 использует этот режим по умолчанию.
Ext3 имеет множество преимуществ. Она разработана для максимальной простоты развертывания. Она основана на годами проверенном коде ext2 и получила "по наследству" замечательный fsck tool. Ext3 в первую очередь предназначена для приложений, не имеющих встроенных возможностей по гарантированию сохранности данных. В целом, ext3 - замечательная файловая система и достойное продолжение ext2.Есть еще одна характеристика, положительно отличающая ext3 от остальных journaled filesystems под Linux - высокая надежность.

Файловая система ext4 является достойным эволюционным продолжением системы ext.

В качестве единицы хранения данных принят объект переменной длины, называемый файлом.

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

Обычно в отдельном файле хранят данные, относящиеся к одному типу. В этом случае тип данных определяет тип файла.

Поскольку в определении файла нет ограничений на размер, можно представить себе файл, имеющий 0 байтов (пустой файл) ,и файл, имеющий любое число байтов.

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

Файловая структура - иерархическая структура, в виде которой операционная система отображает файлы и каталоги (папки).

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

Имена внешних носителей информации. Диски, на которых хранится информация в компьютере, имеют свои имена - каждый диск назван буквой латинского алфавита, а затем ставится двоеточие. Так, для дискет всегда отводятся буквы А: и В: . Логические диски винчестера именуются, начиная с буквы С: . После всех имен логических дисков следуют имена дисководов для компакт-дисков. Например, установлены: дисковод для дискет, винчестер, разбитый на 3 логических диска и дисковод для компакт-дисков. Определить буквы всех носителей информации. А: - дисковод для дискет; С: , D: , Е: - логические диски винчестера; F: - дисковод для компакт-дисков.

Логический диск или том (англ. volume или англ. partition ) - часть долговременной памяти компьютера, рассматриваемая как единое целое для удобства работы. Термин «логический диск» используется в противоположность «физическому диску», под которым рассматривается память одного конкретного дискового носителя.

Для операционной системы не имеет значения, где располагаются данные - на лазерном диске, в разделе жёсткого диска, или на флеш-накопителе. Для унификации представляемых участков долговременной памяти вводится понятие логического диска.

Помимо хранимой информации том содержит описание файловой системы - как правило, это таблица с перечислением всех файлов и их атрибутов (Таблица размещения файлов - англ. File Allocation Table, FAT). В таблице определяется, в частности, в каком каталоге (папке) находится тот или иной файл. Благодаря этому при переносе файла из одной папки в другую в пределах одного тома, не осуществляется перенос данных из одной части физического диска на другую, а просто меняется запись в таблице размещения файлов. Если же файл переносится с одного логического диска на другой (даже если оба логических диска расположены на одном физическом диске), обязательно будет происходить физический перенос данных (копирование с дальнейшим удалением оригинала в случае успешного завершения).

По этой же причине форматирование и дефрагментация каждого логического диска не затрагивает другие.

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

Правила присвоения имени каталогу ничем не отличаются от правил присвоения имени файлу, хотя для каталогов не принято задавать расширения имен. При записи пути доступа к файлу, проходящего через систему вложенных каталогов, все промежуточные каталоги разделяются между собой определенным символом. Во многих ОС в качестве такого символа используется «\» (обратная косая черта).

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

Когда используется файл не из текущего каталога, программе, осуществляющей доступ к файлу, необходимо указать, где именно этот файл находится. Это делается с помощью указания пути к файлу.

Путь к файлу - это имя носителя (диска) и последовательность имен каталогов, в ОС Windows разделенных символом «\» (в ОС линии UNIX используется символ «/»). Этот путь задает маршрут к тому каталогу, в котором находится нужный файл.

Для указания пути к файлу используют два различных метода. В первом случае каждому файлу дается абсолютное имя пути (полное имя файла), состоящее из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Например, путь С:\Abby\Doc\otchet.doc означает, что корневой каталог диска С: содержит каталог Abby , который, в свою очередь, содержит подкаталог Doc , где находится файл otchet.doc . Абсолютные имена путей всегда начинаются от имени носителя и корневого каталога и являются уникальными. Применяется и относительное имя пути. Оно используется вместе с понятием текущего каталога. Пользователь может назначить один из каталогов текущим рабочим каталогом. В этом случае все имена путей, не начинающиеся с символа разделителя, считаются относительными и отсчитываются относительно текущего каталога. Например, если текущим каталогом является С:\Abby , тогда к файлу с абсолютным путем С:\Abby\ можно обратиться как Doc\otchet.doc .

В связи с тем, что файловая структура компьютера может иметь значительный размер, выполнять поиск необходимых документов путем простой навигации по файловой структуре не всегда удобно. Обычно считается, что каждый пользователь компьютера должен хорошо знать (и помнить) структуру тех папок, в которых он хранит документы. Тем не менее, бывают случаи, когда происходит сохранение документов вне этой структуры. Так, например, многие приложения выполняют сохранение документов в папки, принятые по умолчанию, если пользователь забыл явно указать, куда следует сохранить документ. Такой папкой, принятой по умолчанию, может быть папка, э которую последний раз выполнялось сохранение, папка, в которой размещено само приложение, какая-то служебная папка, например \Мои документы и т.п. В подобных случаях файлы документов могут «теряться» в массе прочих данных.

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

Основное поисковое средство Windows XP запускают из Главного меню командой Пуск > Найти > Файлы и папки . Не менее удобен и другой вариант запуска - из любого окна папки (Вид > Панели обозревателя > Поиск > Файлы и папки или клавиша F3 ).

Локализовать сферу поиска с учетом имеющейся информации об имени и адресе файла позволяют элементы управления, представленные на панели поиска. При вводе имени файла разрешается использовать подстановочные символы «*» и «?» . Символ «*» заменяет любое число произвольных символов, а символ«?» заменяет один любой символ. Так, например, поиск файла с именем *.txt завершится с отображением всех файлов, имеющих расширение имени.txt , а результатом поиска файлов с именем *.??t станет список всех файлов, имеющих расширения имени.txt, .bat, .dat и так далее.

При поиске файлов, имеющих «длинные» имена, следует иметь в виду, что если «длинное» имя содержит пробелы (а это допустимо), то при создании задания на поиск такое имя следует заключать в кавычки, например: «Текущие paбoты.doc».

На панели поиска имеются дополнительные скрытые элементы управления. Они отображаются, если щелкнуть на раскрывающей стрелке, направленной вниз.

· Вопрос Когда были произведены последние изменения? позволяет ограничить сферу поиска по дате создания, последнего изменения или открытия файла.

· Вопрос Какой размер файла? позволяет при поиске ограничиться файлами определенного размера.

· Пункт Дополнительные параметры позволяет указать тип файла, разрешить просмотр скрытых файлов и папок, а также задать некоторые другие параметры поиска.

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

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

19.Сжатие данных и архивация файлов.

Характерной особенностью большинства «классических» типов данных, с которыми традиционно работают люди, является определенная избыточность. Степень избыточности зависит от типа данных. Кроме того, степень избыточности данных зависит от принятой системы кодирования. Так, например, можно сказать, что кодирование текстовой информации средствами русского языка (с использованием русской азбуки) дает в среднем избыточность на 20-30% больше, чем кодирование адекватной информации средствами английского языка.
При обработке информации избыточность также играет важную роль. Однако, когда речь заходит не об обработке, а о хранении готовых документов или их передаче, то избыточность можно уменьшить, что дает эффект сжатия данных.
Если методы сжатия информации применяют к готовым документам, то нередко термин сжатие данных подменяют термином архивация данных, а программные средства, выполняющие эти операции, называют архиваторами.
В зависимости от того, в каком объекте размещены данные, подвергаемые сжатию, различают:
- уплотнение (архивацию) файлов;
- уплотнение (архивацию) папок;
- уплотнение дисков.
Если при сжатии данных происходит изменение их содержания, метод сжатия необратим и при восстановлении данных из сжатого файла не происходит полного восстановления исходной последовательности. Такие методы называют также методами сжатия с регулируемой потерей информации. Они применимы только для тех типов данных, для которых формальная утрата части содержания не приводит к значительному снижению потребительских свойств. В первую очередь, это относится к мультимедийным данным: видеорядам, музыкальным записям, звукозаписям и рисункам. Методы сжатия с потерей информации обычно обеспечивают гораздо более высокую степень сжатия, чем обратимые методы, но их нельзя применять к текстовым документам, базам данных и, тем более, к программному коду. Характерными форматами сжатия с потерей информации являются:
- JPG для графических данных;
- .MPG для видеоданных;
- . М РЗ для звуковых данных.
Если при сжатии данных происходит только изменение их структуры, то метод сжатия обратим. Из результирующего кода можно восстановить исходный массив путем применения обратного метода. Обратимые методы применяют для сжатия любых типов данных. Характерными форматами сжатия без потери информации являются:
- .GIF, TIP,. PCX и многие другие для графических данных;
- .AVI для видеоданных;
- .ZIP, .ARJ, .BAR, .LZH, .LH, .CAB и многие другие для любых типов данных.
«Классическими» форматами сжатия данных, широко используемыми в повседневной работе с компьютером, являются форматы.ZIP и.ARJ. В последнее время к ним добавился популярный формат.RAR.
К базовым функциям, которые выполняют большинство современных диспетчеров архивов, относятся:
- извлечение файлов из архивов;
- создание новых архивов;
- добавление файлов в имеющийся архив;
- создание самораспаковывающихся архивов;
- создание распределенных архивов на носителях малой емкости;
- тестирование целостности структуры архивов;
- полное или частичное восстановление поврежденных архивов;
- защита архивов от просмотра и несанкционированной модификации.
Самораспаковывающиеся архивы.. Самораспаковывающийся архив готовится на базе обычного архива путем присоединения к нему небольшого программного модуля. Сам архив получает расширение имени.ЕХЕ, характерное для исполнимых файлов.
Распределенные архивы. Некоторые диспетчеры (например WinZip) выполняют разбиение сразу на гибкие диски, а некоторые (например WinRAR и WinArj) позволяют выполнить предварительное разбиение архива на фрагменты заданного размера на жестком диске. Впоследствии их можно перенести на внешние носители путем копирования.
При создании распределенных архивов диспетчер WinZip обладает неприятной особенностью: каждый том несет файлы с одинаковыми именами. В результате этого нет возможности установить номера томов, хранящихся на каждом из гибких дисков, по названию файла Диспетчеры архивов WinArj и WinRAR маркируют все файлы распределенного архива разными именами и потому не создают подобных проблем.
Защита архивов. В большинстве случаев защиту архивов выполняют с помощью пароля, который запрашивается при попытке просмотреть, распаковать или изменить архив.
К дополнительным функциям диспетчеров архивов относятся сервисные функции, делающие работу более удобной. Они часто реализуются внешним подключением дополнительных служебных программ и обеспечивают:
- просмотр файлов различных форматов без извлечения их из архива;
поиск файлов и данных внутри архивов;
установку программ из архивов без предварительной распаковки;
проверку отсутствия компьютерных вирусов в архиве до его распаковки;
криптографическую защиту архивной информации;
декодирование сообщений электронной почты;
«прозрачное» уплотнение исполнимых файлов.ЕХЕ и.DLL;
создание самораспаковывающихся многотомных архивов;
выбор или настройку коэффициента сжатия информации.