Trabalho com o sistema de arquivos em Kotlin: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Here is the translated HTML content in Portuguese (Português), keeping all HTML tags and only translating the text content inside them. ```html

Introdução ao trabalho com o sistema de arquivos em Kotlin



Trabalhar com o sistema de arquivos é uma das tarefas fundamentais no desenvolvimento de software. Kotlin, sendo uma linguagem moderna, oferece ferramentas poderosas e concisas para gerenciar arquivos e diretórios. Graças à total compatibilidade com Java, você pode usar tanto as bibliotecas clássicas do Java (java.io.File, java.nio.file) quanto as extensões do Kotlin, que tornam o código mais legível e seguro.



Neste artigo, veremos as principais operações com o sistema de arquivos em Kotlin: criação, leitura, escrita, cópia e exclusão de arquivos e pastas. Você aprenderá a usar tanto as classes padrão do Java quanto o estilo Kotlin para escrever código eficiente.



Principais classes e extensões do Kotlin para trabalhar com arquivos



Kotlin não possui uma biblioteca separada própria para trabalhar com o sistema de arquivos, mas fornece muitas funções de extensão úteis para a classe java.io.File. Essas funções tornam o código mais conciso e expressivo. Abaixo estão listadas as mais importantes:



  • readText() — lê o arquivo inteiro como uma string.
  • readLines() — lê o arquivo linha por linha e retorna uma lista de strings.
  • writeText() — escreve uma string no arquivo (sobrescreve).
  • appendText() — adiciona uma string ao final do arquivo.
  • bufferedReader() — retorna um BufferedReader para leitura eficiente.
  • bufferedWriter() — retorna um BufferedWriter para escrita eficiente.
  • inputStream() e outputStream() — para trabalhar com dados binários.
  • copyTo() — copia um arquivo para outro local.
  • deleteRecursively() — exclui recursivamente um arquivo ou diretório.


Exemplo de uso:

import java.io.File

fun main() { val file = File("example.txt")

// Escrevendo texto no arquivo file.writeText("Olá, Kotlin!")

// Lendo texto do arquivo val content = file.readText() println(content) // Exibirá: Olá, Kotlin!

// Adicionando texto file.appendText("Nova linha") println(file.readText())}


Usando Java NIO (Path e Files)

Para operações mais complexas, como mover, copiar com opções ou trabalhar com links simbólicos, é recomendado usar Java NIO (java.nio.file.Path e java.nio.file.Files). Kotlin também suporta essas classes sem quaisquer restrições.



import java.nio.file.Filesimport java.nio.file.Pathimport java.nio.file.Paths

fun main() { val path: Path = Paths.get("nio_example.txt") val content = "Texto para NIO"

// Escrevendo com Files.write Files.write(path, content.toByteArray())

// Lendo com Files.readAllLines val lines = Files.readAllLines(path) lines.forEach { println(it) }}


Leitura e escrita de arquivos: melhores práticas



Ao trabalhar com arquivos, é importante considerar o tamanho dos dados e possíveis erros (por exemplo, arquivo inexistente ou permissões de acesso). Kotlin fornece maneiras convenientes de lidar com exceções usando use e runCatching.



Lendo arquivos grandes

Para ler arquivos grandes (mais de alguns megabytes), não é recomendado usar readText(), pois ele carrega o arquivo inteiro na memória. Em vez disso, use o processamento em fluxo:



import java.io.File

fun readLargeFile(filePath: String) { val file = File(filePath) file.bufferedReader().use { reader -> var line: String? while (reader.readLine().also { line = it } != null) { // Processa cada linha println(line) } }}


A construção

Blogs

Book Recommendations