Lavorare con i file

Spesso ci tocca analizzare una directory o vedere tutti i file che hanno una determinata estensione, come copiare, spostare ed eliminare file.

Listare file

Per listare dei file, intendiamo data una directory avere tutti i nomi dei file da essa contenuta. Vediamo tre esempi, con tre funzioni diverse:

list() ritorna un array di String, e quindi stampa solo il nome dei file;

listFiles() ritorna un array di File, e quindi è possibile accedere a tutte le varie funzioni e proprietà di un oggetto File;

walk() che produce un FileTreeWalk, e lista i file in maniera ricorsiva; ci sono anche le funzioni walkBottomUp() e walkTopDown(), che si differenziano solo per il verso un cui eseguono la scansione.

Ecco qua il codice:

import java.io.File

fun main(args: Array<String>) {

File("/tmp").list().forEach { println(it) }

File("/tmp").listFiles().forEach { println(it) }

File("/tmp").walk().forEach { println(it) }

}

Ovviamente, all'interno del forEach{}, potete svolgere tutte le operazioni che volete.

Copiare un file

Per copiare file, Kotlin mette a disposizione una funzione apposita: File.copyTo(). La funzione accetta tre parametri, di cui solo il primo è obbligatorio, vedremo il perché nella prossima lezione:

  • Il File di destinazione;
  • Se sovrascrivere il file di destinazione nel caso in cui già esista;
    • Avendo impostato a false il secondo parametro, nel caso in cui il file di destinazione già esista, otterremo una eccezione (kotlin.io.FileAlreadyExistsException). Starà a noi, eventualmente, intercettarla e agire di conseguenza.
    • Se invece impostiamo il parametro a true, il file verrà semplicemente sovrascritto.
  • La dimensione del buffer.

Vediamo un esempio:

val fileFrom: String = "original.doc"

val fileTo: String = "copy.doc"

File(fileFrom).copyTo(File(fileTo), false)

Spostare un file

Per spostare un file, Kotlin, in maniera del tutto simile alla copia, mette a disposizione una funzione apposita: File.renameTo(). La funzione accetta un unico parametro: il File di destinazione. Ritorna true o false in base al successo dell'operazione.

Vediamo un esempio:

val fileFrom: String = "original.doc"

val fileTo: String = "copy.doc"

File(fileFrom).renameTO(File(fileTo))

Eliminare un file

La cancellazione dei file in Kotlin, consiste in una riga di codice usando la funzione File.delete().

Questa funzione non cancella le directory, e ritorna true/false a seconda che l'operazione è avvenuta con successo o no.

Vediamo un esempio:

File("test.txt").delete()

Se volessimo cancellare una intera directory in maniera ricorsiva, abbiamo una funzione apposita:

File("test").deleteRecursively()

Tenete, però, presente che questa cancellerà tutto; e che in caso di errore a metà operazione, non è previsto un rollback. Cioè, tutto quello che è già stato cancellato, rimarrà cancellato. Quindi state attenti ad usare questa funzione.

results matching ""

    No results matching ""