Текстовый файл. Форматы текстовых файлов Изменение расширений текстовых файлов

ВВЕДЕНИЕ

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

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

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


Прежде чем начать знакомство с меню редактора MS-DOS Editor, следует попрактиковаться в наборе текста. Текст набирается с клавиатуры как на обычной печатной машинке, в конце каждой строки нажимается Enter.

Чтобы разбить слишком длинную строку на две, надо нажать Enter там, где должен быть конец строки.

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

Можно поправить ошибки в тексте, перемещая курсор по рабочему полю клавишами или мышью. Для удаления символа надо воспользоваться клавишей Del если курсор стоит перед символом который надо удалить или клавишей Backspace если курсор стоит после это символа.

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

При вставке все последующие символы сдвигаются вправо.

При замене текущий символ исчезает.

Документы, создаваемые в редакторе MS-DOS Editor, можно сохранять в текстовых файлах, для этого следует пользоваться меню File Save. Меню File Save As... позволит сохранить файл под другим именем.

Для очистки редактора и начала работы над новым файлом служит меню File New. Чтобы загрузить уже готовый файл в редактор, воспользуйтесь меню File Open. В диалоговой панели следует выбрать курсором имя требуемого файла. Меню File Print позволяет распечатать на принтере либо выделенную часть документа, либо весь текст.

Среди простых редакторов текста в России наибольшее распространение получил ЛЕКСИКОН.

Текстовый процессор Лексикон

Текстовый процессор Лексикон разработан Е.Н.Веселовым в 1985 году в ВЦ АН СССР. С 1991 года поставляется фирмой «Мик-роинформ». Он имеет интерфейс на русском языке и позволяет подготавливать несложные документы с текстом на русском и английском языках. ЛЕКСИКОН удачно заполняет свою «экологическую нишу» - он вполне подойдет тем, кому нужен простой инструмент для подготовки небольших и несложных документов, причем от них не требуется высокого полиграфического качества.

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

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

Команда меню Текст печать Старт позволит распечатать документ на принтере, если переключатель ПРИНТЕР1ФАЙ 1ЭКРА установлен в положение ПРИНТЕР. При положении ЭКРАН можно просмотреть, как в точности будет выглядеть распечатка текста на принтере.

Редактор MS-Word

Вот только некоторые из функций, поддерживаемых Word:

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

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

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

Shift+Ctri с «М», «1», «Н», «С», «(» и «5» (в правой части клавиатуры) зарезервированы.

На самом деле «запрещенных» комбинаций гораздо больше. Если определить для своих программ сочетания с Shift, то время от времени пользователь будет совершенно неожиданно «выпадать» из редактора текста при попытке написать заглавную букву, а сочетания с Alt не пройдут даром при работе в программах, где опции меню вызываются на Alt+буква - как и в самой MS-DOS Shell. В Microsoft Word зарезервированы для внутренних нужд чуть ли не все возможные комбинации клавиш!

Сам переключатель задач - это программа DOSSWAP.EXE, которая загружается перед выполнением любой прикладной программы и заканчивает работу после завершения программы с возвращением в MS-DOS Shell. Программа DOSSWAP занимает около 30 Кбайт оперативной памяти.

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

Для начала разберемся, что такое текстовые файлы и в чем их различие от двоичных файлов. Текстовые файлы являются подмножеством двоичных файлов, но в отличии от двоичных не могут содержать весь набор символов. Вся информация в файле разбивается на строки, ограниченные символам возврат каретки (CR) и перевод строки (LF). Допустимые символы это символы с кодами от 32 до 255, символы с кодами ниже 32 являются управляющими и допустимы только следующие коды:

· 08 (BS) - возврат на шаг

· 09 (TAB) - табуляция

· 0A (LF) - перевод строки

· 0C (FF) – перевод листа

· 0D (CR) – возврат каретки

· 1A (EOF) – конец файла

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

Паскаль поддерживает работу с такими файлами, через файловую переменную типа TextFile, где основной единицей является строка, состоящая из основных базовых типов (в текстовом виде, разделенных пробелом), наиболее часто это просто строка, как набор символов. В качестве примера напишем программу преобразования из DOS кодировки (OEM) в Windows (ANSI). Техническое задание:

1. Программа должна работать в консольном режиме и получать входные параметры через командную строку.

2. Программа называется Oem2Ansi

3. На вход поступают два параметра, имя исходного файла и имя выходного файла;

4. Имя выходного файла может быть опущено, в этом случае используется имя входного файла, с изменением расширения выходного на.ANS;

5. Если имена не указаны, то должна выводиться справка о синтаксисе команды;

6. ошибки обрабатывать будем в минимальном объеме, коды ошибок выдаются как ErrorLevel и доступны для обработки в.bat файле.

Текстпрограммы Oem2Ansi

program Oem2Ansi; {$APPTYPE CONSOLE} uses Windows, SysUtils; var InFile: TextFile; OutFile: TextFile; InFilename: string; OutFilename: string; S: string; begin if ParamCount = 0 then begin WriteLn("Syntax is: Oem2Ansi Infile "); Halt(1);// Ошибкасинтаксиса end; InFilename:= ParamStr(1); if ParamCount = 2 then OutFileName:= ParamStr(1) else OutFileName:= ChangeFileExt(InFilename, ".ans"); AssignFile(InFile, InFilename);// связываемвходнойфайл AssignFile(OutFile, OutFilename);// ивыходнойфайл try try Reset(InFile);// открываем входной файл Rewrite(OutFile);// создаем выходной файл while not EOF(InFile) do// крутимпоканеконецфайла begin Readln(Infile, S);// читаемстроку if Length(S) > 0// на вход функции можно then// подавать только не пустые строки begin OemToChar(Pchar(S), Pchar(S)); WriteLn(Outfile, S);// записываемстроку end else begin WriteLn(Outfile);// записываем пустую строку end; end; except Halt(2);// любаяошибка // не удалось преобразовать файлы end; finally CloseFile(InFile); CloseFile(OutFile); end; end.

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

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

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

Первое действие состоит в открытии файлов, входной файл открывается с помощью процедуры Reset -это открытие текстового файла в режиме чтения, а второй с помощью Rewrite – открытие в режиме записи, если файл существует, то он переписывается. Есть еще одна форма открытия текстовых файлов, это функция Append(FileVar), открытие в режиме добавления строк, если файл существует, то курсор позиционируется в конец файла и файл открывается в режиме записи, если файла нет, то он создается. После нее управление передается в блок finally. В случае ошибки управление сначала передается в блок except, а затем в блок finally.

После этого создается цикл чтения сток пока не будет, достигнут конец файла, или физический или будет встречен символ EOF. Функция EOF(FileVar).

Внутри цикла читается строка во временную переменную Readln(Infile, S) и тут принята одна предосторожность, в функцию Oem2Char НЕЛЬЗЯ передавать пустые строки, поэтому производится анализ длины строки, если строка не нулевая, то производится конвертирования и запись ее в выходной файл, процедурой WriteLn(Outfile, S), иначе в файл пишется пустая строка.

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

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

Для особо желающих сделать GUI версию, с диалогами выбора файлов, с прогресс-бар, с предварительным просмотром первых 10-20 строк входного файла (переключение кнопкой OEM/ANSI), с целью определения направления перекодирования, с остальными наворотами, которые сумеет придумать душа, например пакетная обработка всех файлов из папки.

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

Расширение текстового файла: что это такое?

Начнем с того, что, как правило, большинство файлов такого типа имеют расширение в виде трех литер после разделителя (точки). Самый простой и наиболее часто встречающийся тип - это файлы с расширением.txt, открываемые в тех же системах Windows при помощи стандартного «Блокнота».

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

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

Однако не стоит забывать, что сегодня можно встретить достаточно большое число файлов с одинаковыми расширениями, но созданные в других приложениях или сопоставленные разным программам. Казалось бы, обычный файл с расширением.doc (.docx) изначально соответствует текстовому редактору Microsoft Word. Но ведь открыть его или сохранить в таком виде можно и в другом даже на «яблочных» компьютерах. Сюда же можно отнести и, так сказать, смешанный тип - файлы формата.pdf, содержащие уже не только текст, но и графику. Но ведь и документы Word могут содержать вставленные изображения.

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

Типы расширения файлов: текстовые

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

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

Что же касается разновидностей текстовых файлов, их все и не перечислишь. Наиболее распространенными являются следующие: .txt, .doc, .tex, .text, .pdf, .log, .apt, .ttf, .err, .sub, .djvu, .odt, .rtf и многие другие. Этот список можно продолжать до бесконечности.

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

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

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

Изменение расширений текстовых файлов

Что касается изменения расширения, иногда его можно поменять, например, .txt в.doc и обратно. Редактор Word откроет любой тип. То же самое относится к паре.txt - .bat при открытии в «Блокноте». Но в других случаях лучше такие манипуляции не производить, это попросту ни к чему не приведет, и другое приложение переименованный файл открыть не сможет. Изменение формата придется производить при помощи специальных программ-конверторов.

Вместо послесловия

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

ТЕМА №10: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.

Основные понятия

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

Файлы – это массив переменной длины неограниченного размера.

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

Отличие файла от массива:

А) размещение на внешнем носителе;

Б) длина файла не задается;

В) место элемента не определяется индексом.

Для обозначения файла и работе с ним используется файловая переменная (ФП).

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


Особенности файловой переменной:

Ей нельзя присваивать какие-либо значения

Она не может участвовать в логических операциях

Она не может входить в математические выражения

Объявление файловой переменной

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

Тип файла

Описание файла

Типизированный

Var F1: file of integer;

F2: file of char;

Не типизированный

Текстовый

РАБОТА С ФАЙЛОМ

А) ЗАПИСЬ В ФАЙЛ

Assign(ФП, ‘Name’);

Открываем файл для записи

Записываем данные в файл

Write(ФП, Данные);

Writeln(ФП, Данные); - для текстовых

Закрываем файл

Б) ЧТЕНИЕ ИЗ ФАЙЛА

Связываем файл (можно не существующий) с именем Name с файловой переменной (ФП)

Assign(ФП, ‘Name’);

Открываем файл для чтения (указатель устанавливается на первый элемент)

Читаем данные из файла в переменные и передвигаем указатель файла вперёд.

Read(ФП, Переменные);

Readln(ФП, Переменные); - для текстовых

Закрываем файл

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

ОПРЕДЕЛЕНИЕ ДЛИНЫ ТЕКСТОВЫХ ФАЙЛОВ

В Паскале нет команды, которая бы определяла количество строк, записанных в текстовый файл. Однако есть функция, которая подсказывает момент, когда указатель файла достиг последней строки - EOF (End Of File)

EOF (ФП) – функция подтверждающая

достижение конца текстового файла

Если конец файла достигнут, то EOF (ФП) равняется true.

Если конец файла не достигнут, то EOF (ФП) равняется false.

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

Var f: text; N:integer; s:string;

Assign (f, ‘c:\MyText. txt’);

While Eof(f)=false do { можно записать эту строчку короче: While not Eof(f) do }

Writeln ("В файле c:\MyText. txt ", N, " строк");

ОПРЕДЕЛЕНИЕ ДЛИНЫ ДВОИЧНОГО ФАЙЛА

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

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

FileSize (ФП) – функция, возвращающая длину двоичного файла

Программа, читающая все числа из двоичного целочисленного файла и находящая их сумму:

Var f: file of integer;

Summ, i, T:integer;

Assign (f, ‘c:\MyFile. int’);

For i:=1 to Filesize(f) do { можно использовать другой цикл: While not Eof(f) do }

Writeln ("Сумма чисел, в файле c:\MyFile. int равна ", Summ);

Writeln ("Длина файла c:\MyFile. int ", FileSize(f), " чисел");

ПЕРЕМЕЩЕНИЕ ПО ДВОИЧНОМУ ФАЙЛУ

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

SEEK (ФП, Позиция) – перемещает указатель

в заданную позицию файла

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

Var f: file of real; {объявляем файловую переменную для вещественного файла}

N:= FileSize(f); {определим количество чисел в файле}

Repeat {начало цикла}

Writeln("В файле ‘, N, ‘ чисел’);

Writeln("Введите номер числа, которое надо перенести в конец файла?’);

Until (Poz>=0) and (Poz<=N) {выход из цикла, только если в данном файле такая позиция существует}

Seek(f, Poz); {позиционируем указатель файла на заданную позицию}

Read(f, R); {читаем число из заданной позиции файла в переменную R, указатель перемещается на одну позицию вперёд}

Seek(f, Poz); {возвращаем указатель в заданную позицию}

Write(f, Null); {обнуляем число в котором установлен указатель}

Seek(f, N); {перемещаем указатель в конец файла}

Write(f, R); {записываем число из переменной R в конец файла}

УМЕНЬШЕНИЕ ДВОИЧНЫХ ФАЙЛОВ

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

Truncate (ФП ) процедура, отсекающая данные, расположенные после указателя файла

Программа, оставляющая в двоичном файле только первые 10 чисел :

Var f: file of real; {объявляем файловую переменную}

Assign (f, ‘c:\MyRealFile. rlf’); {связываем файловую переменную с файлом}

Reset (f); {открываем файл для чтения и записи}

Seek(f, 10); {позиционируем указатель файла на заданную позицию}

Truncate (f); {отсекаем от файла всё, что расположено дальше указателя файла}

ДОБАВЛЕНИЕ ИНФОРМАЦИИ В ТЕКСТОВЫЕ ФАЙЛЫ

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

A ppend (ФП) – процедура, открывающая текстовый файл

для добавления строк

Программа, дописывающая в конец текстового файла две строки:

Var FT: text; s: string;

Assign (FT, ‘q. txt’);

S:=’Первая добавленная строка’; Writeln (FT, S);

S:=’Вторая добавленная строка’; Writeln (FT, S);

ПЕРЕИМЕНОВАНИЕ, ПЕРЕНОС ФАЙЛА

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

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

ReName (ФП , Новое_название_файла) процедура, переименовывающая файл и переносящая его в каталог,

указанный в Новом названии файла.

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

Программа, должна дать файлу ‘q1.txt’ новое имя, которое введёт пользователь, и перенести файл ‘ q 2. txt ’ в каталог ‘ c :\ Document \’.

Var FT: text; s: string;

Assign (FT, ‘q1.txt’); { связываем файловую переменную с файлом }

Writeln (‘Введите новое имя для файла q1.txt’);

Readln(s); { читаем с клавиатуры новое имя файла в переменную s}

Rename (FT, s); { переименовываем файл}

Assign (FT, ‘q2.txt’); { связываем файловую переменную со вторым файлом }

Rename (FT, ‘c:\Document\q2.txt’); { переносим файл в заданный каталог с тем же именем}

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

КОПИРОВАНИЕ И УДАЛЕНИЕ ФАЙЛА

Копирование : Чтобы скопировать файл необходимо прочитать все записи одного файла и записать их во вновь созданный файл.

Удаление: Чтобы удалить файл достаточно применить к файловой переменной (связанной с закрытым файлом) процедуру Erase.

ERASE (ФП ) процедура, удаляющая файл, связанный с файловой переменной.

Программа копирует файл с диска "C" на ди c к ‘ D ’и удаляет оригинал с диска "C" (фактически программа переносит файл с одного диска на другой)

Var f1, f2: file of byte;

Assign (f1, ‘c:\MyFile. int’); Reset (f1); {открываем для чтения файл образец}

Assign (f2, ‘d:\MyFile. int’); Rewrite (f2); {создаём файл на диске D}

While not Eof(f1) do

Read (f1, b); {читаем данные из файла оригинала}

Write (f2, b); {записываем данные в новый фал}

Close (f1); {закрываем файла образец, перед удалением файл должен быть обязательно удалён}

Close (f2); {закрываем новый файл}

Erase (f1); {удаляем файл}

РАБОТА С КАТАЛОГАМИ

MkDir (Имя каталога) – процедура создаёт новый каталог

(Если каталог с таким именем существует, то возникнет ошибка)

RmDir (Имя каталога) – процедура удаляет каталог

(Удалить можно только пустой каталог)

ChDir (Имя каталога) – процедура изменяет текущий каталог

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

Для переименования каталога необходимо:

а) Создать новый каталог

б) Перенести туда все файлы

в) Удалить старый каталог

Программа переименовывает каталог "c:\Cat\", в котором расположено два файла "q1.txt" и "q2.ini", в каталог "c:\CatNew\’ и делает каталог текущим.

Var f1,f2: file of byte; b:byte;

MkDir("c:\CatNew"); {создаём новый каталог}

{копируем в новый каталок файл q1.txt}

Assign (f1, ‘c:\Cat\q1.txt’); Reset (f1);

Assign (f2, ‘c:\CatNew\q1.txt’); Rewrite (f2);

While not Eof(f1) do

Begin Read (f1, b); Write (f2, b); End;

{копируем в новый каталок файл q2.ini}

Assign (f1, ‘c:\Cat\q2.ini’); Reset (f1);

Assign (f2, ‘c:\CatNew\q2.ini’); Rewrite (f2);

While not Eof(f1) do

Begin Read (f1, b); Write (f2, b); End;

Close (f1); Close (f2); Erase (f1);

RmDir (‘c:\Cat’); {удаляем старый каталог}

ChDir (‘c:\CatNew’); {делаем новый каталог текущим}

Поиск файлов

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

Для поиска файлов существуют две процедуры, расположенные в модуле WinDos :

FindFirst (Маска, Флаг, Приёмник_информации) – ищет первый файл, который соответствует «маске» и «флагу», в случае обнаружения передаёт данные о найденном файле (каталоге) в переменную типа TSearchRec («приёмник информации»)

Find Next (Приёмник_информации) – ищет следующий файл, соответствующий условиям, поставленным в процедуре FindFirst, в случае обнаружения, передаёт данные о найденном файле (каталоге) в переменную типа TSearchRec («приёмник информации»)

Модуль WinDos содержит, так же переменную Dos Error , которая остаётся равной нулю до тех пор, пока команды поиска обнаруживают файл, соответствующий условию поиска. Если команды поиска не обнаружили файлы, соответствующие условию, то переменная

Маска поиска – строка с именем искомого файла или каталога. Кроме обычных символов маска может содержать «*» и «?».

* - значит, что в искомом файле на данном месте может присутствовать любое количество любых символов;

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

Примеры масок:

"*.* ’ – любой файл с любым расширением

"quest.* " – файл с название "quest" и любым расширением

"*.txt " – файл с любым названием и с расширением "txt"

"qust?.txt " – файл с расширением ‘txt’, содержащий в названии 5 букв первые 4 из которых ‘qust’, а 5-ый символ любой

"qust*.txt " - файл с расширением ‘txt’, первые четыре буквы которого ‘qust’, количество следующих букв не ограниченно

"q uest . txt ’ – файл с названием "quest" и расширением "txt"

Флаг поиска - набор специальных констант соединённых оператором OR.

Можно вместо констант использовать число, равное сумме чисел с соответствующими константами

Флаг

Тип файла

Число

faReadOnly

Искать с атрибутом «Только для чтения»

faHidden

Искать с атрибутом «Скрытый»

faSysFile

Искать с атрибутом «Системный»

faVolume ID

Возвратить идентификатор носителя

faDirectory

Возвращать информацию о каталогах

faArchive

Искать с атрибутом «Архивный»

faAnyFile

Включить все предыдущие флаги

Примеры флагов:

· faReadOn ly or FaHidden – 3 - ищутся файлы, у которых есть атрибут «скрытый» или «только для чтения»

· faDirectoty or FaSysFile - 20 – ищутся каталоги и файлы, у которых установлен атрибут «Системный»

Приёмник информации – переменная типа TSearchRec, которая будет содержать данные о найденном файле

Тип TSearchRec описан в модуле WinDos и не требует предварительного описания программистом. Данный тип – это запись следующего вида:

Type TSearchRec = Record

Fill: Array of byte; {Системный параметр, нами не используется}

Attr: Byte; {Параметр, содержащий данные о флаге файла}

Time: LongInt; {Время создания файла}

Size: LongInt; {Размер файла в байтах}

Name: Array of Char; {Имя файла}

Допустим у нас есть переменная SR, которая имеет тип TSearchRec. После использования её в команде FindFirst в ней окажется информация о найденном файле (каталоге.)

Информация об имени файла попадёт в SR. Name, о размере файла в SR. Size, а чтобы определить является ли файл системным надо соединить значение SR. Attr с константой FaSysFile оператором And. Файл системный, если результат больше нуля.

Пример :

IF Sr. Attr and FaSysFile > 0 THEN Writeln ("Системный’);

Программа ищет в каталоге "c:\Doc" все файлы с расширением "txt". И выводит на экран название тех, размер которых больше 3000 байт.

Uses Dos, crt, WinDos;

Var SR: TSearchRec; {Описываем переменную в которой будем хранить информацию о найденных файлах}

clrscr; ChDir("c:\Doc"); {Меняем текущий каталог}

FindFirst("*.txt",faAnyFile, SR); {Ищем в текущем каталоге первый файл с расширением "txt’ и любым набором флагов, результат в переменную SR}

while DosError=0 do {выполняем цикл пока файлы находятся}

if SR. Size > 3000 {если размер файла более 3000 байт}

then writeln(SR. Name); {Выводим имя найденного файла на экран}

Программа ищет все каталоги, размещённые на диске в корневом каталоге диска «С» и выводит перечень каталогов в файл "c:\info. txt ’ и на экран (Корневой каталог диска «С»– это каталог "c:\").

Uses Dos, crt, WinDos;

Var SR: TSearchRec; f:text;

Clrscr; Assign (f, "c:\info. txt"); Rewrite(f);

ChDir("c:\"); {Переходим в корневой каталог}

FindFirst("*",faDirectory, SR); {Ищем файл без расширений включая каталоги }

While DosError =0 do {выполняем цикл пока файлы находятся}

if SR. Attr and faDirectory>0 then {если файл имеет атрибут «Каталог»}

Writeln (SR. Name); {выводим имя файл на экран}

Writeln (f, Sr. Name); {выводим имя файл в файл "c:\info. txt"}

FindNext(SR); {Ищем следующий файл}

Процедуры при работе с файловыми переменными

Процедура

Назначение

Замечание

Assign(f, ‘name’)

Связывает файловую переменную с конкретным файлом (привязывает переменную к имени файла). Ставится перед первым использованием файловой переменной.

Можно имя файла ’name’ задавать через строковую переменную (S): Assign(f, S)

Reset(f)

Открывает существующий файл и устанавливает указатель на начало записи.

Для любых файлов

Rewrite(f)

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

Для любых файлов

Close(f)

Закрывает открытый файл

Для любых файлов

Erase(f)

Стирает предварительно закрытый файл

Для любых файлов

Rename(f, f1)

Переименовывает файл f в файл f1. Файл f должен быть предварительно закрыт

Для любых файлов

Read(f, v1,…vn)

Write(f, v1,…vn)

Записывает в файл f значения переменных v1,…vn

Для типизированных и нетипизированных файлов

Readln(f, v1,..vn)

Считывает записи из файла f в переменные v1, ..vn

Writeln(f, v1,.vn)

Записывает в файл f значения переменных v1,..vn

в типизированных файлах недопустимо

Append(f)

Открывает файл и устанавливает указатель на метку конца файла

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

seek(f, n)

Устанавливает указатель на запись с номером n

truncate(f)

Отсекает все записи, находящиеся после указателя и в этой позиции записывает метку конца файла.

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

Процедура

Назначение

Замечание

Получение сведений о конце файла True, если указатель в конце файла, иначе - False

Логическая функция.

True, если указатель на метке конца строки, иначе - False

Логическая функция. Для текстовых файлов

N:=filesize(F);

Определение количества записей в файле

N:=filepos(f)

Выдает номер записи, на которую указывает указатель записи. Первая запись имеет номер 0.

Примеры программ

ЗАДАЧА 1: Написать программу, записывающую в текстовый файл данные об авторе и 20-ть случайных цифр

randomize; {настраиваем генератор случайных чисел}

rewrite(f); {открываем файл для записи}

r:=random(10); {генерируем случайное число от 1 до 10}

STR(r, s); {преобразуем число r в строку s}

writeln(f, s); {записываем строку с числом в файл}

close(f); {закрываем файл}

ЗАДАЧА 2: Написать программу, читающую из текстового файла данные об авторе и 20-ть случайных цифр

r, i,c: integer;

assign(f,"dddddd. txt"); {связываем файловую перем. с файлом}

reset(f); {открываем файл для чтения}

for i:=1 to 20 do {включаем цикл на 20 повторений}

readln(f, s); {читаем цифру из файла в строку s}

val(s, r,c); {переводим строку “s” в число “r”, в переменной “c” код возможной ошибки}

if c=0 then writeln(r); {если ошибки не было (с=0), то выводим цифру на экран}

close(f); {закрываем файл}

ЗАДАЧА 3: Вычислить корни квадратного уравнения и вывести результаты в файл.

Var a, b,c, x1,x2, d: real;

Assign(f,’result. txt); {связываем файл с файловой переменной f)

Rewrite(f); {открываем файл для записи}

{Читаем исходные данные с клавиатуры и отправляем их в файл}

Writeln(f, ‘решение квадратного ур-я’);

Writeln(f, "a=",a:6:3,"b=", b:6:3,"c=",c:6:3);

{Расcчитываем корни квадратного уравнения}

If d>=0 then Begin X1:=-b+sqrt(d)/(2*a); X2:=-b-sqrt(d)/(2*a); End;

{Выводим результат в файл}

If d<0 then writeln(f,’у урав-я нет корней’)

else writeln(f, ‘корни: x1=’, x1:6:3,’x2=’, x2:6:3);

{Закрываем файл и заканчиваем работу программы}

Writeln(‘рез-ты работы программы в файле result. txt’);

На диске имеется файл с именем Karl. txt, в котором записана скороговорка: "Карл у Клары украл кораллы, Клара у Карла украла кларнет." Требуется подсчитать кол-во букв «К»

Var f:text; s:integer; a:char;

{Связываем файл с файловой переменной и открываем его для записи}

Assign(f,’Karl. txt’); Reset(f);

{последовательно просматриваем все строки файла до последней}

While not eof(f) do

{последовательно читаем все символы строки до последнего в строке и сверяем его с "k"}

While not eoln(f) do

Begin Read(f, a); If a=’k’ then s:=s+1; End;

{переходим на следующую строку файла}

Ввести текст в текстовый файл f1. Переписать строку из файла f1 в f2 – первую половину файла в прямом, а вторую – в обратном порядке следования символов.

Var f1,f2:text; s, snew, sa, sb: string; n, y,i: integer;

{Связываем файлы с файловыми переменными}

Assign(f1,’file1’); Assign(f2,’file2’);

{Читаем строку с клавиатуры и отправляем её в файл №1}

Rewrite(f1); Readln(s); Writeln(f1,s); Close(f1);

{Читаем строку из файла №1}

Reset(f1); Read(f1,s1); Close(f1);

{Находим середину строки}

N:=length (s1); Y:=n div 2;

{В новую переменную записываем первую половину строки в прямом, вторую половину в обратном порядке}

For i:=1 to y do

Snew:=Snew+s1[i];

For i:=n downto y+1 do

Snew:=sew+s1[i];

{Записываем новую строку в файл №2}

Rewrite(f2); Writeln(sNew); Write(f2,sNew); Close(f2);

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

  • фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);
  • определённое логическое представление и соответствующие ему операции чтения/записи.

Может быть любой — от последовательности бит(хотя читаем именно байтами, а точнее словами-группами из байт, по четыре, по восемь, по шестнадцать) до базы данных с произвольной организацией или любым промежуточным вариантом; многомерной базой данных, строго упорядоченной.

Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму — команды СУБД. Промежуточные варианты — чтение и разбор всевозможных форматов файлов.

(Материал из Википедии — свободной энциклопедии)

Господи, какой бред (© olivur77).

Вы что-нибудь поняли? Я нет. Определение в википедии, конечно, скорее всего корректно, но никакого понимания для простых смертных (таких как я) оно не дает.

Что такое файл? Объяснение на нормальном языке.

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

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

Почему так происходит? Если Вы думаете, что операционная система Windows такая умная, то Вы глубоко ошибаетесь.

Я хочу развеять миф об «умности» операционной системы Windows и поближе познакомить Вас такими понятиями как «файл», «расширение», «формат» .

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

Давайте сделаем одну настройку (как показано на рисунке ниже), которая поможет нам разобраться с этими понятиями.

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

Затем щелкните два раза быстро левой кнопкой мыши по значку «Свойства папки» — Вам откроется настройка свойств папок. По умолчанию Вы попадаете на вкладку «Общие». Щелкните левой кнопкой мыши по вкладке «Вид».

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

Как создать файл? На примере txt.

Начнем с простого примера. Создадим на своем рабочем столе обычный текстовый документ (файл). Сделаем мы это следующим образом.

Расположите указатель мыши (курсор) в области рабочего стола, где нет ярлыков. Щелкаем правой кнопкой мыши, выбираем левой кнопкой мыши «Создать» — «Текстовый документ».

На рабочем столе должен появиться ярлычок с изображением «перекидного блокнота на пружинках как бы с текстом» под названием «Текстовый документ.txt».

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

Текстовый документ.txt — это, собственно, название самого файла, которое состоит из:

    1. Имени

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

    1. Разделителя

Точка (.) — это символ, который разделяет имя файла и расширение файла. Почему именно точка? Исторически с покон веков. Просто так решили давным давно, когда только зарождались программы. Да в общем-то и симпатично — ничего лишнего и глаз не режет.

    1. Расширения

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

Если пока понятно, что такое расширение файла , то я дам взрослую формулировку: Расширение файла указывает операционной системе на его формат, в нашем случае файл имеет формат txt.

Я долго думал, делать экскурс в историю в рамках этой темы или нет, но все-таки решил написать, так как в этом экскурсе Вы найдете еще несколько ответов на вопросы «почему …».

Когда-то давно, когда компьютеры были большими и слабенькими , не было той красивой разноцветной графики, которую Вы видите сейчас на экране монитора своего компьютера, да и называть компьютеры в Советском Союзе было принято ЭВМ (электронно — вычислительная машина или ПЭВМ, где «П» означало персональная), а программистов математиками. Тогда на экране монитора можно было видеть только текст белого или зеленого цвета на черном фоне. Компьютеры тогда были 8-разрядные (не забивайте сейчас этим себе голову, примите на веру). Борьба тогда шла за каждый бит информации. Разрабатывались различные стандарты.

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

Опять же из-за скудности ресурсов, под имя файла выделили 8 символов (скажем так, не более 8-ми символов, т. е. меньше можно, а больше 8-ми нельзя), разделителем сделать точку, а для расширения отвести только 3 символа (буквы).

Шло время. Прогресс не стоял на месте. Компьютеры стали маленькими и мощными с прекрасной красивой цветной графикой, которая радует наш глаз. Разрядность персональных компьютеров увеличилась уже в 8 раз. И теперь перед Вами теперь находится 32-х или 64-х разрядный компьютер с 32-х или 64-х разрядной операционной системой (скорее всего Windows).

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

Так вот. Поскольку имен файлов во всем мире миллиарды и эти имена могут быть любыми, то и этих 256 символов за глаза хватает. Интереснее с расширениями. На самом деле форматов файлов не так уж и много (относительно конечно) и до сих пор хватает, в общем-то, и 3-х символов. Сейчас есть и 4 символа (есть и больше) в расширении файлов, но это скорее преемственность. Например, файл, созданный тестовым редактором Word из пакета Microsoft Office 2003 имеет расширение.doc, а файл, созданный тестовым редактором Word из пакета Microsoft Office 2007 (более свежая версия этого пакета), имеет расширение.docx.

Еще один интересный момент. Как только компьютеры достигли своего развития, когда на мониторах начала появляться графика, а не только текст, тогда же появились и ярлыки (Да, собственно, и манипулятор мышь. Мыши советского производства имели довольно большой размер, поэтому их презрительно называли крысами). Так вот маленькие картинки на ярлыках (в нашем случае это изображением «перекидного блокнота на пружинках как бы с текстом») — это тоже часто отдельные файлы, в то время, в основном, имели расширение.ico сокращение до 3-х символов английского слова icon, которое в английском языке означает икона, символ, знаковый образ. С тех пор эти маленькие изображения называют иконками. Другие названия этих маленьких изображений — пиктограмма, значок.

И так, вернемся к нашим баранам, т. е. к файлу «Текстовый документ.txt» на нашем рабочем столе.

Щелкаем левой кнопкой мыши 2 раза быстро по ярлыку созданного нами файла «Текстовый документ.txt». Гм. (А вот интересно, у Вас получается для открытия файла 2 раза быстро по нему щелкнуть? Причем мышку в это время двигать нельзя, потому что если сдвинем мышку между щелчками это самое открытие не сработает. У меня получается через раз. За 15 лет я так и не научился 2 раза подряд быстро щелкать левую кнопку мыши. Наверно мои кривые руки, скорее всего, заточены под кувалду. Поэтому я пользуюсь старым «дедовским» методом, который экономит мои нервные клетки.) Я, правда, открываю файлы по другому. Щелкаю правой кнопкой мыши по ярлыку, выбираю в меню самый верхний пункт меню «Открыть» и нажимаю по нему левой кнопкой мыши. (Мы очень часто пользуемся мышкой. Если вы не умеете или плохо с ней работаете, то можете пройти два урока о и о )

Что мы видим? Мы видим пустой файл, открытый программой «Блокнот» (пустой, потому что мы туда еще ничего не писали — это недолго сделать, напишем еще).

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

Пусть наш текстовый документ остается на рабочем столе. А мы зайдем в интернет на сайт бесплатного клавиатурного тренажера на страничку по адресу http://stamina.ru/blog/pitanie/blini и скопируем оттуда кусочек рецепта следующим образом.

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

Ну и возьмем какой-нибудь эталонный диск. К примеру на компьютере есть диск «G:» размером 10 Гб (гигабайт). Или если в байтах 10 000 000 000 байт (на самом деле немного больше, но для нас это сейчас не принципиально).

Нетрудно подсчитать, что таких файлов, как наш «Рецепт блинчиков.txt» на этом диске поместится: 10 Гб делим на наши 507 байт и получается примерно 19 723 866 файлов (на самом деле немного меньше, но для нас это сейчас тоже не принципиально).

Грубо говоря на нашем диске в 10 Гб мы можем разместить 20 миллионов таких файлов, как наш «Рецепт блинчиков.txt».

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

На этом все. Всем удачи и творческих успехов. 🙂

P.S. Так же читайте вторую часть статьи, о и третью — о .