Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 23 di 45
  • livello principiante
Indice lezioni

Apertura e chiusura di un file

Come aprire e chiudere un file fisico utilizzando Ruby: il metodo file.new e file.open
Come aprire e chiudere un file fisico utilizzando Ruby: il metodo file.new e file.open
Link copiato negli appunti

Una delle funzionalità più utilizzata è sicuramente la gestione dei file che in alcuni linguaggi è una delle esperienze più frustranti per il programmatore inesperto; fortunatamente non è il caso di Ruby che anche in questo frangente mantiene una grande immediatezza e semplicità.

A questo punto il lettore avrà notato che qualsiasi argomento in Ruby non presenta mai un'elevata difficoltà ma è tutto molto intuitivo e di conseguenza risulta anche molto naturale. Una delle descrizioni più appropriate lette in giro dice che "imparare Ruby non è come scalare una montagna, ma è più come esplorare una pianura; ad ogni argomento ne segue un altro, ma nessuno porta con se grandi difficoltà".

Torniamo alle cose pratiche e vediamo quali metodi offre la classe File per eseguire le operazioni base sui file: apertura, chiusura, lettura e scrittura.

Apertura e chiusura di un file

Come è consueto per operare sul contenuto di un file occorre prima di tutto aprirlo. Il Ruby per farlo mette a disposizione due metodi. Innanzitutto c'è il classico File.new, dove File è ovviamente la classe che si occupa dei file ed ha come superclasse IO, quindi si ha ad esempio:

mio_file = File.new("test.txt", "r+")

fatto questo tutte le operazioni vanno fatte sull'oggetto mio_file di tipo File. Alla fine dopo averlo opportunamente processato il file va chiuso con:

mio_file = File.close("test.txt", "r+")

File.new può prendere da uno a tre argomenti, il primo rappresenta il nome del file da aprire, il secondo la modalità di apertura e il terzo i permessi da associare al file. La modalità di apertura può essere espressa sia come stringa sia come "or" di flag. Tra le principali flag, che sono costanti della classe File, troviamo:

  • APPEND: apertura in modalità append
  • CREAT: se il file da aprire non esiste viene creato
  • RDONLY: apertura a sola lettura
  • RDWR: apertura per lettura e scrittura
  • TRUNC: apre il file e lo azzera se già esiste
  • WRONLY: apertura a sola lettura

Analogamente alle flag è possibile usare le stringhe:

  • r: apertura a sola lettura
  • r+: apertura per lettura e scrittura dall'inizio del file
  • w: apertura a sola scrittura, se il file non esiste ne viene creato uno nuovo, altrimenti viene azzerato
  • w+: apertura per lettura e scrittura, se il file non esiste ne viene creato uno nuovo, altrimenti viene azzerato
  • a: apertura a sola scrittura dalla fine del file, se il file non esiste viene creato
  • a+: apertura per lettura e scrittura dalla fine del file, se il file non esiste viene creato
  • b: va aggiunto ad uno dei precedenti e permette la gestione in modalità binaria, esiste solo per sistemi Windows.

I permessi, come terzo argomento, vanno indicati, nei sistemi Unix-like, nella classica forma Owner-Group-Other.

Oltre alla modalità classica di apertura, con la coppia new/close, il Ruby permette di aprire un file anche con il metodo open. A differenza di new a open può essere associato un blocco al quale viene passato il file appena aperto come parametro:

File.open("test.txt", "r+") do |mio_file|
    ...
end

Utilizzando open non c'è più bisogno di chiamare al termine delle operazioni close poiché il file viene chiuso automaticamente all'uscita dal blocco; open può anche essere invocato senza blocco e in tal caso è solo un sinonimo di new e valgono per esso tutte le considerazioni fatte in precedenza.

Ti consigliamo anche