Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Всем привет, как я и обещал, вот вам статья про работу с файлами. Хочу для начала оговорить пару организационных моментов. Итак, я с вами видеться могу только раз в месяц, но не могу допустить у вас интеллектуальной голодовки. Как же мне поступить? Есть два очевидных выхода из этой ситуации:

· Записывать видео, где буду наглядно всё показывать

· Вести что-то вроде блога со статьями на различную тематику

Так вот мне по душе второй вариант. Обосную:

· Для записи видео я должен быть один в комнате, что бывает очень редко

· При записи видео я могу оговориться

· Во время записи могут появиться неотложные дела

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

Итак, теперь мы можем перейти непосредственно к новому материалу.

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

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

· Типизированные

· Без типа

· Текстовые

Первые два пункта часто называют «бинарными», но это откровенная чушь. Мы то с вами знаем правду, что любой кусок информации на компьютере, будь то текстовый файл или видео, - это просто набор 1 и 0. Так что если на компьютере лежит какой-то файл, то ваша программа сможет открыть его и как текстовый и как «бинарный», эй безразлично, потому как в обоих случаях это просто набор 1 и 0. Разница будет только в том, что из этого выйдет. Понятное дело, что не стоит полагаться на правильность работы программы, которая картинку открывает как текстовый файл. Текст то она получит, но смысла в нём будет не больше, чем мозгов в голове у бездарности, написавшей такую программу.

Как происходит объявление файлов в программе:

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

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

 

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

Итак, перейдём к самому главному. В начале работы с файлом, нужно каким-то образом сказать программе, что нашей файловой переменной будет соответствовать некий файл на компьютере. Делается это процедурой assignFile(f: file, fileName: string) следующим образом:

По причине того, что сейчас для вас файлы – это нечто, что можно использовать для удобства отладки и использования таких ресурсов как acmp.ru, я думаю, будет достаточным пока что рассмотреть только текстовые файлы. В таком случае у вас появляется возможность залезть в файл и посмотреть что внутри.
Для того, чтобы работать с файлами, их нужно открыть или создать. Предыдущая процедура только связывала переменную с именем файла на компьютере. Такого файла может и не существовать на деле. Но нас это не устраивает, если мы хотим работать с этим файлом, так что было бы неплохо создать. Для создания нового файла и открытия его для записи существует процедура rewrite(f: file). При этом, даже если такой файл уже существет на компьютере, он будет удалён и создан новый. Но если мы хотим просто дописать что-то в конец уже существующего файла, то можно использовать процедуру append(f: file). Для открытия файла в режиме чтения следует использовать процедуру reset(f: file). Если файла не существует, а вы захотите открыть его для чтения, компилятор выдаст ошибку.
В конце работы с файлом его обязательно надо закрыть closefile(f: file).

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

· Read(f: file, a, b, c…: someType)

· ReadLn(f: file, a, b, c…: someType)

· Write(f: file, s: string)

· WriteLn(f: file, s: string)

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

Рассмотрим простую программу, иллюстрирующую все то, о чём я говорил.

 

С клавиатуры я ввёл числа от 1 до 15 по порядку. Теперь посмотрим, что выдала нам программа.

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

 

А теперь заглянем в наш текстовый файл.

 

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

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

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

Будьте очень внимательны с закрытием файлов!!!

Ну я думаю, что на этом всё. Если есть какие-то вопросы – пишите в комментах.

Ах да, ещё вот что хотел сказать: учитесь говорить «я не понял» или «я не знаю» и задавать вопросы. Если вы что-то не понимаете или обманываете меня, у нас наступает рассинхрон. Пока вы говорите правду, я даю вам ту информацию, к которой вы готовы и тогда вам интересно. Но если вы что-то недопоняли, а сказали, что всё хорошо, я дам вам следующую тему, которую вы уже наверняка не поймёте. Вам эта ситуация не понравится и вы сдадитесь в конечном счёте. Я не ставлю вам отметки. Единственная моя цель – это ваш наиболее безболезненный вход в сферу программирования.
Я помогаю вам – так не надо мне мешать, обманывая меня.
Я надеюсь вы уловили. Только правда + вопросы = хороший программист. До скорого, приятель.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.