Skip to Content
Scala Cookbook, 2nd Edition
book

Scala Cookbook, 2nd Edition

by Alvin Alexander
August 2021
Intermediate to advanced
799 pages
17h 41m
English
O'Reilly Media, Inc.
Content preview from Scala Cookbook, 2nd Edition

Chapter 16. Files and Processes

When it comes to working with files, many of the solutions in this chapter use Java classes, but for some situations the scala.io.Source class and its companion object offer some nice simplifications compared to Java. Not only does Source make it easy to open and read text files, but it also makes it easy to accomplish other tasks, such as downloading content from URLs or substituting a String for a File.

File recipes in this chapter will demonstrate how to:

  • Read and write text and binary files

  • Use the Loan Pattern with scala.util.Using to automatically close resources

  • Process every character in a file

  • Treat a String as a File, typically for the purpose of testing

  • Serialize and deserialize objects to files

  • List files and directories

Next, when it comes to working with processes, the Scala process classes are written as a DSL so you can execute external system commands in a way that feels similar to Unix. The ability to run system commands is useful for applications, and it’s terrific for scripts.

The classes and methods of the scala.sys.process package let you run external system commands from Scala, with code that looks like this:

val result: String = "ls -al".!!
val result = Seq("ls", "-al").!!
val rootProcs = ("ps aux" #| "grep root").!!.trim
val contents: LazyList[String] =
    sys.process.Process("find /Users -print").lazyLines

The Scala process DSL provides five primary ways to execute external commands:

  • Use the run method to run ...

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.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Scala Cookbook

Scala Cookbook

Alvin Alexander
Programming Scala, 2nd Edition

Programming Scala, 2nd Edition

Dean Wampler, Alex Payne
Functional Programming in Scala, Second Edition

Functional Programming in Scala, Second Edition

Runar Bjarnason, Michael Pilquist, Paul Chiusano

Publisher Resources

ISBN: 9781492051534Errata Page