Файловый ввод/вывод

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

Рубрика Программирование, компьютеры и кибернетика
Вид доклад
Язык русский
Дата добавления 22.09.2008
Размер файла 10,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

1

Тема доклада: Файловый ввод/вывод.

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

Рассмотрим основные функции для работы с файлами:

OPEN filespec &key direction element-type if-exists if-does-not-exist external-format

Функция создает, открывает и возвращает поток файла заданного в filespec.

filespec - путь к файлу

direction - одно из:input, :output, :io, или :probe. По умолчанию:input. Режим открытия файла (чтение, запись, чтение/запись, поток создан но закрыт)

element-type - тип данных с которыми поддерживает работу файл. По умолчанию Character.

if-exists - поведение если файл уже существует (:error, :new-version, :rename, :rename-and-delete, :overwrite, :append, :supersede).

if-does-not-exist - поведение если файл не существует (:error, :create).

external-format - Внешний указатель формата файла. The default is :default.

Возвращает поток (stream).

(setq s (open “example.txt” :direction :io)); создает файл дле чтения/записи и связывает с ним символ s.

LOAD filespec

Эта функция загружает файл выражений и выполняет эти выражения. filespec - это строковая константа, которая представляет собой имя файла может включать префикс директории, например "/function/test1". Если операция успешно завершина, LOAD возвращает имя последней функции, определенной в файле. Если операция не выполнена, LOAD возвращает имя файла в виде строкового выражения.

WRITE-BYTE byte stream

Записывает байт в выходной поток. Тип данных должен быть изменен на unsigned-byte;

_(with-open-file (s "temp-byte" :direction :output :element-type 'unsigned-byte)(write-byte 101 s))

=> 101 ; в файле символ `е`

WRITE-CHAR char stream

Записывает символ в выходной поток;

_(with-open-file (s "temp" :direction :output)(write-char #\B s))

р B

WRITE-LINE string &optional stream &key start end

Записывает строку (ключевые слова :start и :end позволяют задавать диапазон записываемой строки (отсчет с нуля)); производит перевод каретки на новую строку.

_(with-open-file (s "temp" :direction :output )(write-line “Hello, world” s))

=>“Hello, world”

WRITE-STRING string &optional stream &key start end

Записывает строку но не добавляет новую линию в выходной поток;

_(with-open-file (s "temp" :direction :output )(write-string “Hello, world” s :start 3 :end 6))

=>“lo,”

READ-BYTE stream &optional eof-error-p eof-value

Читает байт с входного потока.

eof-error-p - по умолчанию nil. Oбобщенная булева переменная (nil - false , все остальное true).

eof-value--признак конца файла.

_(with-open-file (s "temp-bytes" :element-type 'unsigned-byte)(read-byte s))

=>101

READ-CHAR &optional stream eof-error-p eof-value recursive-p

Читает символ с входного потока. Возвращает (целое) ASCII код считываемого символа. Если не задано <описателя файла> и в буфере ввода клавиатуры нет символов, READ-CHAR ждет, чтобы вы ввели что-либо с клавиатуры (заканчивающееся RETURN). Hапример, добустим, что буфер клавиатуры пуст:

(read-char)

будет ждать какого-либо ввода. Если вы набрали "АВС", завершив ввод RETURN, READ-CHAR возвратит 65 (код AS0CII буквы "А" (латинской)). Следующие три обращения к READ-CHAR возвратят 66,67 и 10 (переход на новую строку) соответственно. Если затем последует еще одно обращение к READ-CHAR, она будет ждать ввода;

_(with-open-file (s "temp-bytes")(read-byte s))

=>#\e

READ-LINE &optional stream eof-error-p eof-value recursive-p

Читает строку. READ-LINE возвращает nil, иначе она возвращает строковое значение, которое было считано. Hапример, допустим, что F - это разрешенный указатель открытого файла:

(read-line f)

возвратит следующую введенную строку из файла или (если достигнут конец файла) nil.

PEEK-CHAR &optional peek-type stream eof-error-p eof-value recursive-p

Читает символ с потока так, что он доступен для следующей операции чтения. Аргумент peek-type позволяет перескочить к пробелу (Т) или какомуто отдельному символу(a character); /* ??? */

UNREAD-CHAR character &optional stream

Помещает символ назад на переднюю сторону входного потока, где он остается пока не прочитается снова;

LISTEN &optional stream

Возвращает Т если данные доступны на входном потоке;

READ-CHAR-NO-HANG &optional stream eof-error-p eof-value recursive-p

Если символ доступен на входном потоке, функция возвращает символ, иначе nil;

CLEAR-INPUT &optional stream

Флеширует входной поток, если это нужно;

FINISH-OUTPUT &optional stream

Флеширует выходной поток и ждет результата от адресата;

FORCE-OUTPUT &optional stream

То же что и FINISH-OUTPUT но не ждет результата;

CLEAR-OUTPUT &optional stream

Очистка буфера потока;

DELETE-FILE filespec

Удаляет файл;

_(with-open-file (s "delete-me.text" :direction :output :if-exists :error) (delete-file s)); создает и удаляет файл

=> T

FILE-POSITION &optional stream

Возвращает текущую позицию в файле связанным с потоком srteam;

FILE-POSITION &optional stream position-spec

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

и возвращает Т если позиционирование удалость и NIL при неудаче;

(FILE-POSITION s 0) ; возврат к началу файла.

CLOSE &optional stream

Закрывает поток.

Для работы с файлами можно использовать и функции PRINТ, PRINС, PRIN1 и READ. Приведем простенький пример:

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

(setq out-stream (open "temp.txt" :direction :output))

(print 'abc out-stream) ;запись строки abc

ABC

(close out-stream)

T

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

(setq in-stream (open "temp.txt" :direction :input)) #<INPUT-STREAM "temp.txt">

(read in-stream); считаем все с потока

ABC

(close in-stream)

T


Подобные документы

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

    презентация [382,2 K], добавлен 22.10.2013

  • Файловый ввод/вывод с использованием разных классов. Вызовы операционной системы. Использование вызовов операционной системы. Основные способы открытия файла. Замена файла, связанного со стандартными устройствами ввода/вывода. Операции чтения файла.

    курсовая работа [1,1 M], добавлен 09.12.2016

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

    реферат [14,5 K], добавлен 06.12.2011

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

    реферат [98,9 K], добавлен 24.06.2008

  • Программа, которая будет выполнять записи в log-файл действий, идентифицированных как попытки атаки на защищаемый объект. Язык программирования PHP. Описание таблиц СУБД MySQL. Алгоритм работы программы. Вывод результата запроса через вложенный цикл.

    курсовая работа [2,0 M], добавлен 26.07.2015

  • Создание приложения Windows, позволяющего автоматизировать процесс обработки информации студентов университета. Организация работы с физическими файлами в языках программирования. Изучение средств IDE Delphi для организации работы с текстовыми файлами.

    курсовая работа [1,5 M], добавлен 08.11.2011

  • Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.

    методичка [126,3 K], добавлен 07.12.2011

  • Значение и применение персонального компьютера и программного обеспечения в профессиональной деятельности. Перечень и содержание работы в системе программирования Pascal и Delphi. Условные операторы, массивы и строки. Общая схема работы с файлами.

    отчет по практике [642,2 K], добавлен 04.06.2013

  • Разработка файловового менеджера "FedorCommander" для работы под управлением операционной системы семейства Windows. Методы и принципы программной работы с файлами и папками. Технологии, методы, структуры, принципы положенные в основу алгоритма.

    курсовая работа [1007,8 K], добавлен 18.06.2012

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

    доклад [1,9 M], добавлен 12.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.