Skip to Main Content
Kotlin Cookbook
book

Kotlin Cookbook

by Ken Kousen
November 2019
Intermediate to advanced content levelIntermediate to advanced
254 pages
4h 55m
English
O'Reilly Media, Inc.
Content preview from Kotlin Cookbook

Chapter 10. Input/Output

Kotlin makes doing input/output (I/O) operations easy, but the style is different from what a Java developer may expect. Resources in Kotlin are frequently closed by employing a use function that does so on the user’s behalf. This chapter includes a couple of recipes that focus on that approach, specifically for files, but that can be generalized to other resources.

10.1 Managing Resources with use

Problem

You want to process a resource such as a file and be sure that it is closed when you are finished, but Kotlin does not support Java’s try-with-resources construct.

Solution

Use the extension functions use or useLines on readers or input/output streams.

Discussion

Java 1.7 introduced the try-with-resources construct, which allows a developer to open a resource inside parentheses between the try keyword and its corresponding block; the JVM will automatically close the resource when the try block ends. The only requirement is that the resource come from a class that implements the Closeable interface. File, Stream, and many other classes implement Closeable, as the example in Example 10-1 shows.

Example 10-1. Using try-with-resources from Java
package io;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class TryWithResourcesDemo {
    public static void main(String[] args) throws IOException {
        String path = "src/main/resources/book_data.csv";

        File file = new File(path);
        String 
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Functional Kotlin

Functional Kotlin

Mario Arias, Rivu Chakraborty
Kotlin Programming Cookbook

Kotlin Programming Cookbook

Aanand Shekhar Roy, Rashi Karanpuria
Functional Programming in Kotlin

Functional Programming in Kotlin

Runar Bjarnason, Paul Chiusano, Marco Vermeulen
Learning Concurrency in Kotlin

Learning Concurrency in Kotlin

Miguel Angel Castiblanco Torres

Publisher Resources

ISBN: 9781492046660Errata PageSupplemental Content