Scrittura su un file in Kotlin

1. Panoramica

In questo rapido tutorial, impareremo vari modi di scrivere contenuto in un file utilizzando i metodi di estensione Kotlin, disponibili nella sua libreria standard.

2. Estensioni di file Kotlin

Kotlin fornisce vari modi per scrivere in un file sotto forma di metodi di estensione per java.io.File .

Useremo molti di questi per dimostrare diversi modi in cui possiamo ottenere questo risultato usando Kotlin:

  • writeText: consente di scrivere direttamente da una stringa
  • writeBytes: ci consente di scrivere direttamente da un ByteArray
  • printWriter: ci fornisce un PrintWriter
  • bufferedWriter - ci permette di scrivere usando un BufferedWriter

Discutiamoli in modo più dettagliato.

3. Scrivere direttamente

Scrivere direttamente in un file da una data sorgente è la strategia più semplice che possiamo aspettarci utilizzando i metodi di estensione Kotlin.

3.1. writeText

Probabilmente il metodo di estensione più semplice, w riteText accetta il contenuto come argomento String e lo scrive direttamente nel file specificato. Il contenuto fornito è testo codificato in UTF-8 (predefinito) o qualsiasi altro set di caratteri specificato:

File(fileName).writeText(fileContent)

Questo metodo delega internamente su writeBytes come descritto di seguito. Ma prima converte il contenuto dato in un array di byte usando il set di caratteri specificato.

3.2. writeBytes

Allo stesso modo, possiamo usare i byte come input. Il metodo writeBytes accetta un ByteArray come argomento e lo scrive direttamente nel file specificato. Ciò è utile quando abbiamo il contenuto come un array di byte piuttosto che come testo normale.

File(fileName).writeBytes(fileContentAsArray)

Se il file specificato esiste, viene sovrascritto.

4. Scrivere in un file utilizzando i writer

Kotlin offre anche metodi di estensione che ci forniscono un'istanza di Java Writer.

4.1. printWriter

Se desideriamo utilizzare un Java PrintWriter , Kotlin fornisce una funzione printWriter proprio per questo scopo. Con esso, possiamo stampare rappresentazioni formattate di oggetti su un OutputStream :

File(fileName).printWriter()

Questo metodo restituisce una nuova istanza di PrintWriter . Successivamente, possiamo sfruttare il metodo utilizzato per gestirlo :

File(fileName).printWriter().use { out -> out.println(fileContent) }

Con l' uso, possiamo eseguire una funzione sulla risorsa che viene chiusa dopo la terminazione. La risorsa viene chiusa indipendentemente dal fatto che la funzione sia stata eseguita correttamente o abbia generato un'eccezione.

4.2. buffereredWriter

Allo stesso modo, Kotlin fornisce anche una funzione bufferedWriter che ci fornisce un Java BufferedWriter.

Quindi, con esso, possiamo scrivere testo in un flusso di output di caratteri in un modo più efficiente.

File(fileName).bufferedWriter()

Simile a PrintWriter , questa funzione restituisce una nuova istanza di BufferedWriter che, in seguito, possiamo utilizzare per scrivere il contenuto del file.

File(fileName).bufferedWriter().use { out -> out.write(fileContent) }

5. conclusione

In questo articolo, abbiamo visto diversi modi di scrivere in un file utilizzando i metodi di estensione Kotlin.

Infine, il codice sorgente di questo articolo e i casi di test pertinenti sono disponibili nel seguente repository GitHub.