Учебники

Эйфория — Файлы I / O

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

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

Отображение на экране

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

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

#!/home/euphoria-4.0b2/bin/eui
 
puts(1, "Euphoria is really a great language, isn't it?" )

Это дает следующий результат на вашем стандартном экране —

Euphoria is really a great language, isn't it?

Открытие и закрытие файлов

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

  • открыть()
  • близко()
  • Е ()
  • получает ()
  • ЕОКП ()

Открытый метод

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

Синтаксис

integer file_num = open(file_name, access_mode)

Выше метод возвращает -1 в случае ошибки при открытии данного имени файла. Вот параметры —

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

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

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

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

S.No Режимы и описание
1

р

Открывает текстовый файл только для чтения. Указатель файла находится в начале файла.

2

Р.Б.

Открывает файл для чтения только в двоичном формате. Указатель файла находится в начале файла.

3

вес

Открывает текстовый файл только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.

4

термометру

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

5

U

Открывает файл для чтения и записи. Указатель файла устанавливается в начале файла.

6

UB

Открывает файл для чтения и записи в двоичном формате. Указатель файла находится в начале файла.

7

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

8

аб

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

р

Открывает текстовый файл только для чтения. Указатель файла находится в начале файла.

Р.Б.

Открывает файл для чтения только в двоичном формате. Указатель файла находится в начале файла.

вес

Открывает текстовый файл только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.

термометру

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

U

Открывает файл для чтения и записи. Указатель файла устанавливается в начале файла.

UB

Открывает файл для чтения и записи в двоичном формате. Указатель файла находится в начале файла.

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

аб

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

пример

В следующем примере создается новый текстовый файл в текущем каталоге в вашей системе Linux —

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile,txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

Если файл открывается успешно, то он «myfile.txt» создается в вашем текущем каталоге и дает следующий результат —

File opend successfully

Метод close ()

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

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

Синтаксис

close( file_num );

Здесь дескриптор файла, полученный при открытии файла, передается как параметр.

пример

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

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

Это дает следующий результат —

File opend successfully
File closed successfully

Чтение и запись файлов

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

Метод printf ()

Метод printf () записывает любую строку в открытый файл.

Синтаксис

printf(fn, st, x) 

Вот параметры —

  • fn — дескриптор файла, полученный из метода open ().

  • st — Строка формата, где десятичное число или атом отформатированы с использованием% d, а строка или последовательность отформатирована с использованием% s.

  • x — Если x — последовательность, то спецификаторы формата из st сопоставляются с соответствующими элементами x. Если x является атомом, то обычно st содержит только один спецификатор формата и применяется к x. Тем не мение; Если st содержит несколько спецификаторов формата, то каждый из них применяется к одному и тому же значению x.

fn — дескриптор файла, полученный из метода open ().

st — Строка формата, где десятичное число или атом отформатированы с использованием% d, а строка или последовательность отформатирована с использованием% s.

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

пример

В следующем примере открывается файл и записывается имя и возраст человека в этом файле —

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

printf(file_num, "My name is %s and age is %d\n", {"Zara", 8})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

Приведенный выше пример создает файл myfile.txt . Записывает заданное содержимое в этот файл и, наконец, закрывается. Если вы откроете этот файл, он будет иметь следующий контент —

My name is Zara and age is 8

Метод gets ()

Метод gets () читает строку из открытого файла.

Синтаксис

gets(file_num)

Здесь передаваемым параметром является описание файла, возвращаемое методом opend () . Этот метод начинает чтение с начала файла строка за строкой. Символы имеют значения от 0 до 255. Атом -1 возвращается в конец файла.

пример

Давайте возьмем файл myfile.txt, который уже создан.

#!/home/euphoria-4.0b2/bin/eui

integer file_num
object line

constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "r")
if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

line = gets(file_num)
printf( STDOUT, "Read content : %s\n", {line})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

Это дает следующий результат —

File opend successfully
Read content : My name is Zara and age is 8

File closed successfully

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