Gestione di file e cartelle con Ruby
Ruby integra strumenti per la creazione, l'apertura, la scrittura, la lettura e la modifica di file e cartelle, il tutto avvalendosi di semplici metodi. Vediamo subito un breve esempio riguardante la creazione di un file e la scrittura all'interno di esso di una riga di testo:
# creazione di un file e scrittura
File.open('file.txt', 'w') do |scrivi|
# inserire il testo tra apici
scrivi.puts 'File creato con Ruby!'
# fine chiamata al metodo
end
Lo stesso file potrà essere aperto e letto con poche righe di codice:
# apertura e lettura di un file di testo
File.open('file.txt', 'r') do |leggi|
while line = leggi.gets
puts line
# chiusura del ciclo while
end
# fine chiamata al metodo
end
Si noti come in questo secondo script abbiamo utilizzato per la prima volta una doppia chiusura ("end" - "end"), grazie ad essa infatti è stato possibile chiudere due differenti blocchi di istruzioni: uno relativo al ciclo "while" per la lettura del file, il secondo relativo alla chiamata del metodo open della classe.I blocchi di istruzione in Ruby possono essere annidati, cioè scritti l'uno all'interno dell'altro.
Tornando all'argomento principale di questo capitolo porremo la nostra attenzione sul metodo utilizzato nei due esempi precedenti.
"File.open", metodo relativo alla classe File di Ruby, consente di aprire un file in diversi modalità sulla base di argomenti forniti sotto forma di simboli come per esempio:
- r (read-only, o "sola lettura" ) che apre in lettura ponendo il puntatore all'inizio del file, se non viene specificato alcun argomento dallo sviluppatore esso è considerato dall'interprete come il modo di default
- r+ (read/write, o "lettura e scrittura") che pone il puntatore del file al suo inizio
- w (write-only, o "sola scrittura"), che tronca un file esistente ad una lunghezza zero oppure permette di creare un nuovo file in modalità scrittura
- w+ che apre in lettura e scrittura e pone il puntatore all'inizio del file
- a, che apre in sola scrittura e pone il puntatore alla fine del file
- a+, che apre in lettura e scrittura e pone il puntatore alla fine del file
- b, che apre in modalità binaria (solo per Windows/DOS)
I metodi a disposizione per la classe "File" in Ruby sono decine, consigliamo quindi di consultare la manualistica on line per eventuali approfondimenti.
Anche i metodi a disposizione per la gestione delle directory sono molto semplici da utilizzare (classe Dir); innanzitutto abbiamo il metodo pwd che ci permette di sapere il nome e il percorso della directory corrente, per la chiamata a questo metodo basta una semplice istruzione:
# conoscere la directory corrente Dir.pwdSe invece desideriamo creare una nuova cartella, il metodo di riferimento sarà questa volta mkdir:
# creare una nuova directory
Dir.mkdir('cartella')
Naturalmente sarà possibile spostarsi da una cartella all'altra, se per esempio ci trovassimo sulla root di Ruby e volessimo spostarci all'interno della nuova directory creata il metodo da utilizzare sarà chdir:
Dir.chdir('cartella')
Per leggere il contenuto di una cartella vi sono vari metodi basati sulla lettura di un vettore attraverso un ciclo. Abbiamo già visto in precedenza il ciclo each - do, quindi per il prossimo esempio proporremo qualcosa di nuovo:
Dir.foreach('cartella') { |file| puts file }
foreach vede appunto il contenuto di una cartella (il cui nome è passato come argomento) come un vettore, quando richiamato esso mostrerà tutti i valori per ciascun (foreach) indice presente nel vettore.







