Trabalhando com o sistema de arquivos em Kotlin: na prática

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

Introdução



Trabalhar com o sistema de arquivos é uma das tarefas básicas em qualquer linguagem de programação. Em Kotlin, graças à sua sintaxe concisa e às poderosas extensões da biblioteca padrão Java, realizar operações com arquivos e diretórios torna-se simples e intuitivo.



Neste artigo, vamos abordar na prática as principais operações: criação, leitura, escrita, cópia, movimentação e exclusão de arquivos e pastas. Todos os exemplos são escritos em Kotlin e estão prontos para uso em seus projetos. O material será útil tanto para iniciantes quanto para desenvolvedores experientes que desejam atualizar seus conhecimentos ou encontrar soluções ideais para tarefas do dia a dia.



Principais classes e imports



Para trabalhar com o sistema de arquivos em Kotlin, são utilizadas classes dos pacotes java.io (por exemplo, File) e java.nio.file (por exemplo, Path, Files). As recomendações modernas preferem java.nio.file, pois esta API é mais performática e conveniente.



Para todos os exemplos, precisaremos dos seguintes imports:



import java.io.Fileimport java.nio.file.Pathimport java.nio.file.Pathsimport java.nio.file.Filesimport java.nio.file.StandardCopyOptionimport java.nio.file.StandardOpenOption


Criação de arquivo e diretório



Vamos começar com o mais simples — a criação de um novo arquivo e pasta.



// Criação de diretórioval dir = File("my_directory")if (!dir.exists()) {    dir.mkdirs() // mkdirs() cria todos os diretórios pai ausentes    println("Diretório criado: ${dir.absolutePath}")}

// Criação de arquivoval file = File(dir, "example.txt")if (!file.exists()) { file.createNewFile() println("Arquivo criado: ${file.absolutePath}")}


Observe: mkdirs() cria toda a cadeia de diretórios, se ela não existir. mkdir() cria apenas o último diretório e retornará false se a pasta pai estiver ausente.



Leitura e escrita de arquivos



Estas são as operações mais comuns. Kotlin oferece várias maneiras elegantes para trabalhar com o conteúdo dos arquivos.



Escrita em arquivo



val path = Paths.get("my_directory/write_example.txt")

// String para escreverval content = "Olá, mundo! Esta string foi escrita no arquivo.Segunda linha."

// Escrita simples de string (sobrescreve o arquivo)Files.writeString(path, content)

// Escrita de lista de stringsval lines = listOf("Linha 1", "Linha 2", "Linha 3")Files.write(path, lines)

// Anexar ao final do arquivoval additionalContent = "Linha adicional."Files.writeString(path, additionalContent, StandardOpenOption.APPEND)


O método Files.writeString() foi introduzido no Java 11 e está disponível no Kotlin/JVM. Se você precisar de suporte para versões mais antigas, use Files.write() especificando a codificação.



Leitura de arquivo



val path = Paths.get("my_directory/write_example.txt")

// Leitura de todo o conteúdo em uma stringval fullContent = Files.readString(path)println("Conteúdo do arquivo:$fullContent")

// Leitura em uma lista de stringsval allLines: List<String> = Files.readAllLines(path)allLines.forEachIndexed { index, line -> println("Linha ${index + 1}: $line")}

// Leitura usando Stream (para arquivos grandes)Files.lines(path).use { stream -> stream.forEach { line -> println("Processando linha: $line") }}


A construção .use { ... } garante o fechamento do fluxo após o processamento, o que é especialmente importante ao trabalhar com arquivos grandes.



Cópia, movimentação e renomeação



Essas operações também são implementadas através de java.nio.file.Files.



Cópia de arquivo



val source = Paths.get("my_directory/example.txt")val destination = Paths.get("my_directory/backup/example_copy.txt")

Blogs

Book Recommendations