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 ...
Get Kotlin Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.