Gravando em um arquivo no Kotlin

Gravando em um arquivo no Kotlin

1. Visão geral

Neste tutorial rápido, aprenderemos sobre várias maneiras de escrever conteúdo em um arquivo usando métodos de extensão Kotlin - disponíveis em sua biblioteca padrão.

2. Extensões KotlinFile

O Kotlin oferece várias maneiras de gravar em um arquivo na forma de métodos de extensão parajava.io.File.

Usaremos vários deles para demonstrar maneiras diferentes em que podemos conseguir isso usando Kotlin:

  • writeText – permite que escrevamos diretamente de umString

  • writeBytes – nos permite escrever diretamente de umByteArray

  • printWriter – nos dá umPrintWriter

  • bufferedWriter – nos permite escrever usando umBufferedWriter

Vamos discuti-los com mais detalhes.

3. Escrevendo diretamente

Gravar diretamente emFile  a partir de uma determinada fonte é a estratégia mais simples que podemos esperar usando os métodos de extensão Kotlin.

3.1. writeText

Provavelmente o método de extensão mais direto,writeText takes the content as a String argument and writes it directly into the specified file. O conteúdo fornecido é texto codificado emUTF-8 (padrão) ou qualquer outrocharset especificado:

File(fileName).writeText(fileContent)

Este método delega internamente emwriteBytes as descrito abaixo. Mas primeiro, ele converte o conteúdo fornecido em uma matriz de bytes usando o conjunto de caracteres especificado.

3.2. writeBytes

Da mesma forma, podemos usar bytes como entrada. The method writeBytes takes a ByteArray as an argument and directly writes it into the specified file. Isso é útil quando temos o conteúdo como um array de bytes em vez de texto simples.

File(fileName).writeBytes(fileContentAsArray)

Se o arquivo fornecido existir, ele será substituído.

4. Escrevendo em umFile usando gravadores

Kotlin também oferece métodos de extensão que nos fornecem uma instância JavaWriter.

4.1. printWriter

If we’d like to use a Java PrintWriter, Kotlin provides a printWriter function exactly for this purpose. Com ele, podemos imprimir representações formatadas de objetos em umOutputStream:

File(fileName).printWriter()

Este método retorna uma nova instânciaPrintWriter. A seguir, podemos aproveitar o métodouse para lidar com:

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

Comuse, we pode executar uma função no recurso que é fechada após o término. O recurso é fechado independentemente de a função ter sido executada com êxito ou gerada uma exceção.

4.2. bufferedWriter

Da mesma forma, Kotlin também fornece uma funçãobufferedWriter que nos fornece um JavaBufferedWriter.

Então, com ele, podemos escrever texto em um fluxo de saída de caracteres de uma maneira mais eficiente.

File(fileName).bufferedWriter()

Semelhante aPrintWriter, esta função retorna uma nova instânciaBufferedWriter que, posteriormente, podemos usar para escrever o conteúdo do arquivo.

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

5. Conclusão

Neste artigo, vimos diferentes maneiras de gravar em um arquivo usando os métodos de extensão Kotlin.

Por fim, o código-fonte deste artigo e os casos de teste relevantes estão disponíveis nosGitHub repository a seguir.