Euphoria - Arquivos I / O

Usando a linguagem de programação Euphoria, você pode escrever programas que leem e alteram dados de arquivos em sua unidade de disquete ou disco rígido, ou criar novos arquivos como uma forma de saída. Você pode até mesmo acessar dispositivos em seu computador, como impressora e modem.

Este capítulo descreveu todas as funções básicas de E / S disponíveis no Euphoria. Para obter informações sobre mais funções, consulte a documentação padrão do Euphoria.

Exibindo na tela

A maneira mais simples de produzir saída é usando a instrução puts () , onde você pode passar qualquer string a ser exibida na tela. Existe outro método printf () que também pode ser usado no caso de você ter que formatar uma string usando valores dinâmicos.

Esses métodos convertem as expressões que você passa para uma string e escreve o resultado na saída padrão da seguinte forma -

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

Isso produz o seguinte resultado em sua tela padrão -

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

Abrindo e fechando arquivos

O Euphoria fornece métodos básicos necessários para manipular arquivos por padrão. Você pode fazer a maior parte da manipulação de arquivos usando os seguintes métodos -

  • open()
  • close()
  • printf()
  • gets()
  • getc()

O método aberto

Antes de ler ou gravar um arquivo, você deve abri-lo usando o método open () embutido do Euphoria . Esta função cria um descritor de arquivo que é utilizado para chamar outros métodos de suporte associados a ele.

Sintaxe

integer file_num = open(file_name, access_mode)

O método acima retorna -1 caso haja um erro ao abrir o nome de arquivo fornecido. Aqui estão os parâmetros -

  • file_name - O argumento file_name é um valor de string que contém o nome do arquivo que você deseja acessar.

  • access_mode- O access_mode determina o modo em que o arquivo deve ser aberto. Por exemplo, ler, escrever append, etc. Uma lista completa de valores possíveis para modos de abertura de arquivo é fornecida na tabela a seguir -

S.Não Modos e descrição
1

r

Abre um arquivo de texto apenas para leitura. O ponteiro do arquivo é colocado no início do arquivo.

2

rb

Abre um arquivo para leitura apenas em formato binário. O ponteiro do arquivo é colocado no início do arquivo.

3

w

Abre um arquivo de texto apenas para escrita. Substitui o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para gravação.

4

wb

Abre um arquivo para gravação apenas em formato binário. Substitui o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para gravação.

5

u

Abre um arquivo para leitura e gravação. O ponteiro do arquivo é definido no início do arquivo.

6

ub

Abre um arquivo para leitura e gravação em formato binário. O ponteiro do arquivo é colocado no início do arquivo.

7

a

Abre um arquivo para anexar. O ponteiro do arquivo estará no final do arquivo se o arquivo existir (modo anexar). Se o arquivo não existir, ele cria um novo arquivo para gravação.

8

ab

Abre um arquivo para anexar em formato binário. O ponteiro do arquivo estará no final do arquivo se o arquivo existir (modo anexar). Se o arquivo não existir, ele cria um novo arquivo para gravação.

Exemplo

O exemplo a seguir cria um novo arquivo de texto no diretório atual em seu sistema 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

Se o arquivo for aberto com sucesso, "myfile.txt" será criado em seu diretório atual e produzirá o seguinte resultado -

File opend successfully

O método close ()

O método close () libera qualquer informação não escrita e fecha o arquivo, após o qual nenhuma leitura ou escrita pode ser feita no arquivo.

O Euphoria fecha automaticamente um arquivo quando o objeto de referência de um arquivo é reatribuído a outro arquivo. É uma boa prática usar o método close () para fechar um arquivo.

Sintaxe

close( file_num );

Aqui, o descritor de arquivo recebido ao abrir um arquivo é passado como um parâmetro.

Exemplo

O exemplo a seguir cria um arquivo como acima e o fecha antes de o programa existir -

#!/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

Isso produz o seguinte resultado -

File opend successfully
File closed successfully

Ler e escrever arquivos

O Euphoria fornece um conjunto de métodos de acesso para tornar nossas vidas mais fáceis durante a leitura ou gravação de um arquivo em modo texto ou binário. Vamos ver como usar os métodos printf () e gets () para ler e gravar arquivos.

O método printf ()

O método printf () grava qualquer string em um arquivo aberto.

Sintaxe

printf(fn, st, x)

Aqui estão os parâmetros -

  • fn - Descritor de arquivo recebido do método open ().

  • st - Formate a string onde decimal ou átomo é formatado usando% d e string ou sequência é formatada usando% s.

  • x- Se x for uma sequência, então os especificadores de formato de st são combinados com os elementos correspondentes de x. Se x for um átomo, então normalmente st contém apenas um especificador de formato e é aplicado a x. Contudo; se st contiver vários especificadores de formato, cada um será aplicado ao mesmo valor x.

Exemplo

O exemplo a seguir abre um arquivo e escreve o nome e a idade de uma pessoa neste arquivo -

#!/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

O exemplo acima cria o arquivo myfile.txt . É grava determinado conteúdo nesse arquivo e finalmente fecha. Se você abrir este arquivo, ele terá o seguinte conteúdo -

My name is Zara and age is 8

O método gets ()

O método gets () lê uma string de um arquivo aberto.

Sintaxe

gets(file_num)

Aqui, o parâmetro passado é a descrição do arquivo retornada pelo método opend () . Este método começa a ler a partir do início do arquivo linha por linha. Os caracteres têm valores de 0 a 255. O átomo -1 é retornado no final do arquivo.

Exemplo

Vamos pegar um arquivo meuarquivo.txt que já foi criado.

#!/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

Isso produz o seguinte resultado -

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

File closed successfully

O Euphoria fornece uma lista de muitos métodos que o ajudam a manipular arquivos. Esses métodos estão listados nas Rotinas da Biblioteca Euphoria .