Euforia - File I / O

Utilizzando il linguaggio di programmazione Euphoria, è possibile scrivere programmi che leggono e modificano i dati dei file sul disco floppy o sul disco rigido oppure creare nuovi file come forma di output. Puoi persino accedere ai dispositivi sul tuo computer come la stampante e il modem.

Questo capitolo descrive tutte le funzioni di I / O di base disponibili in Euphoria. Per informazioni su ulteriori funzioni, fare riferimento alla documentazione standard di Euphoria.

Visualizzazione sullo schermo

Il modo più semplice per produrre output è utilizzare l' istruzione put () in cui è possibile passare qualsiasi stringa da visualizzare sullo schermo. Esiste un altro metodo printf () che può essere utilizzato anche nel caso in cui sia necessario formattare una stringa utilizzando valori dinamici.

Questi metodi convertono le espressioni passate in una stringa e scrivono il risultato nell'output standard come segue:

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

Questo produce il seguente risultato sullo schermo standard:

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

Apertura e chiusura di file

Euphoria fornisce i metodi di base necessari per manipolare i file per impostazione predefinita. Puoi sfruttare al massimo la manipolazione dei file utilizzando i seguenti metodi:

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

Il metodo aperto

Prima di poter leggere o scrivere un file, devi aprirlo usando il metodo open () integrato di Euphoria . Questa funzione crea un descrittore di file che viene utilizzato per chiamare altri metodi di supporto ad esso associati.

Sintassi

integer file_num = open(file_name, access_mode)

Il metodo sopra restituisce -1 nel caso in cui si verifichi un errore nell'apertura del nome file specificato. Ecco i parametri:

  • file_name - L'argomento file_name è un valore stringa che contiene il nome del file a cui si desidera accedere.

  • access_mode- Access_mode determina la modalità in cui il file deve essere aperto. Ad esempio, leggere, scrivere, aggiungere, ecc. Un elenco completo dei possibili valori per le modalità di apertura dei file è fornito nella tabella seguente:

S.No Modalità e descrizione
1

r

Apre un file di testo in sola lettura. Il puntatore del file viene posizionato all'inizio del file.

2

rb

Apre un file per la sola lettura in formato binario. Il puntatore del file viene posizionato all'inizio del file.

3

w

Apre un file di testo per la sola scrittura. Sovrascrive il file se il file esiste. Se il file non esiste, crea un nuovo file per la scrittura.

4

wb

Apre un file per la scrittura solo in formato binario. Sovrascrive il file se il file esiste. Se il file non esiste, crea un nuovo file per la scrittura.

5

u

Apre un file sia in lettura che in scrittura. Il puntatore del file viene impostato all'inizio del file.

6

ub

Apre un file sia in lettura che in scrittura in formato binario. Il puntatore del file viene posizionato all'inizio del file.

7

a

Apre un file da aggiungere. Il puntatore del file si trova alla fine del file se il file esiste (modalità di aggiunta). Se il file non esiste, crea un nuovo file per la scrittura.

8

ab

Apre un file da aggiungere in formato binario. Il puntatore del file si trova alla fine del file se il file esiste (modalità di aggiunta). Se il file non esiste, crea un nuovo file per la scrittura.

Esempio

Il seguente esempio crea un nuovo file di testo nella directory corrente sul tuo 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 il file si apre correttamente, viene creato "myfile.txt" nella directory corrente e produce il seguente risultato:

File opend successfully

Il metodo close ()

Il metodo close () scarica tutte le informazioni non scritte e chiude il file, dopodiché non è più possibile eseguire operazioni di lettura o scrittura sul file.

Euphoria chiude automaticamente un file quando l'oggetto di riferimento di un file viene riassegnato a un altro file. È buona norma utilizzare il metodo close () per chiudere un file.

Sintassi

close( file_num );

Qui il descrittore di file ricevuto durante l'apertura di un file viene passato come parametro.

Esempio

L'esempio seguente crea un file come sopra e quindi lo chiude prima che esista il programma -

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

Questo produce il seguente risultato:

File opend successfully
File closed successfully

Lettura e scrittura di file

Euphoria fornisce una serie di metodi di accesso per semplificarci la vita durante la lettura o la scrittura di un file in modalità testo o in modalità binaria. Vediamo come usare i metodi printf () e gets () per leggere e scrivere file.

Il metodo printf ()

Il metodo printf () scrive qualsiasi stringa in un file aperto.

Sintassi

printf(fn, st, x)

Ecco i parametri:

  • fn - Descrittore di file ricevuto dal metodo open ().

  • st - Formato stringa in cui il decimale o l'atomo è formattato utilizzando% de la stringa o la sequenza è formattata utilizzando% s.

  • x- Se x è una sequenza, allora gli specificatori di formato da st vengono abbinati agli elementi corrispondenti di x. Se x è un atomo, normalmente st contiene solo un identificatore di formato e viene applicato a x. Però; se st contiene più identificatori di formato, ognuno viene applicato allo stesso valore x.

Esempio

L'esempio seguente apre un file e scrive il nome e l'età di una persona in questo file:

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

L'esempio precedente crea il file myfile.txt . Scrive il contenuto dato in quel file e alla fine si chiude. Se apri questo file, avrà il seguente contenuto:

My name is Zara and age is 8

Il metodo gets ()

Il metodo gets () legge una stringa da un file aperto.

Sintassi

gets(file_num)

Il parametro qui passato è la descrizione del file restituita dal metodo opend () . Questo metodo inizia a leggere dall'inizio del file riga per riga. I caratteri hanno valori da 0 a 255. L'atomo -1 viene restituito alla fine del file.

Esempio

Prendiamo un file myfile.txt che è già stato creato.

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

Questo produce il seguente risultato:

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

File closed successfully

Euphoria fornisce un elenco di molti metodi che ti aiutano a manipolare i file. Questi metodi sono elencati in Euphoria Library Routines .