Schrijven naar een bestand in Kotlin

1. Overzicht

In deze korte tutorial leren we over verschillende manieren om inhoud in een bestand te schrijven met behulp van Kotlin-uitbreidingsmethoden - beschikbaar in de standaardbibliotheek.

2. Kotlin het dossier Extensies

Kotlin biedt verschillende manieren om in een bestand te schrijven in de vorm van uitbreidingsmethoden voor java.io.File.

We zullen verschillende hiervan gebruiken om verschillende manieren te demonstreren waarop we dit kunnen bereiken met Kotlin:

  • writeText - laat ons rechtstreeks schrijven vanuit een Draad
  • writeBytes - stelt ons in staat om rechtstreeks vanuit een ByteArray
  • printWriter - geeft ons een PrintWriter
  • bufferedWriter - stelt ons in staat om te schrijven met een BufferedWriter

Laten we ze in meer detail bespreken.

3. Direct schrijven

Rechtstreeks in een het dossier van een bepaalde bron is de eenvoudigste strategie die we kunnen verwachten met Kotlin-uitbreidingsmethoden.

3.1. writeText

Waarschijnlijk de meest eenvoudige uitbreidingsmethode, writeText neemt de inhoud als een Draad argument en schrijft het rechtstreeks in het opgegeven bestand. De opgegeven inhoud is tekst die is gecodeerd in UTF-8 (standaard) of een andere gespecificeerde tekenset:

Bestand (bestandsnaam) .writeText (fileContent)

Deze methode delegeert intern writeBytes zoals hieronder beschreven. Maar eerst converteert het de gegeven inhoud naar een array van bytes met behulp van de opgegeven tekenset.

3.2. writeBytes

Evenzo kunnen we bytes als invoer gebruiken. De methode writeBytes neemt een ByteArray als argument en schrijft deze rechtstreeks naar het opgegeven bestand. Dit is handig als we de inhoud hebben als een array van bytes in plaats van als platte tekst.

Bestand (bestandsnaam) .writeBytes (fileContentAsArray)

Als het opgegeven bestand bestaat, wordt het overschreven.

4. Schrijven in een het dossier Schrijvers gebruiken

Kotlin biedt ook uitbreidingsmethoden die ons voorzien van een Java Writer-instantie.

4.1. printWriter

Als we een Java PrintWriter, Kotlin biedt een printWriter precies voor dit doel functioneren. Hiermee kunnen we opgemaakte representaties van objecten afdrukken naar een OutputStream:

Bestand (bestandsnaam) .printWriter ()

Deze methode retourneert een nieuw PrintWriter voorbeeld. Vervolgens kunnen we profiteren van de methode gebruik om ermee om te gaan:

Bestand (bestandsnaam) .printWriter (). Gebruik {out -> out.println (fileContent)}

Met gebruik, we kunnen een functie uitvoeren op de bron die na beëindiging wordt gesloten. De bron is gesloten, ongeacht of de functie met succes is uitgevoerd of een uitzondering heeft veroorzaakt.

4.2. bufferedWriter

Evenzo biedt Kotlin ook een bufferedWriter functie die ons voorziet van een Java BufferedWriter.

Hiermee kunnen we op een efficiëntere manier tekst naar een tekenuitvoerstroom schrijven.

Bestand (bestandsnaam) .bufferedWriter ()

Gelijkwaardig aan PrintWriter, deze functie retourneert een nieuw BufferedWriter instantie die we later kunnen gebruiken om de inhoud van het bestand te schrijven.

Bestand (bestandsnaam) .bufferedWriter (). Gebruik {out -> out.write (fileContent)}

5. Conclusie

In dit artikel hebben we verschillende manieren gezien om in een bestand te schrijven met Kotlin-extensiemethoden.

Ten slotte zijn de broncode voor dit artikel en de relevante testcases beschikbaar in de volgende GitHub-repository.