Chapter 6. Working with Files and Streams

In this chapter, we will cover the following recipes:

  • Reading and processing a file line by line
  • Writing to a file
  • Searching in a file
  • Concatenating files
  • Downloading a file
  • Working with blobs
  • Transforming streams

Introduction

Working with files is the bread and butter of every programming language when reaching out for data in the environment. The classes and methods dealing with this functionality can be found in the dart:io package, together with support for networking (sockets and HTTP). This package can only be used in Dart command-line applications, not in browser apps, so our code runs in a Dart VM.

When working with files, and I/O in general, there are two modes of operation:

  • Synchronous operations, where code execution waits for the I/O result
  • Asynchronous operations, where the code execution is not blocked and continues while I/O is taking place

Because the Dart VM is single threaded, a synchronous call blocks the application. So, for scalability reasons, the asynchronous way is the best practice using the Future and Stream classes from the dart:async package. Most methods on files come in pairs, the asynchronous and the synchronous versions, such as copy and copySync. Unless you really have to wait for the result, use the asynchronous way so that screens and apps do not appear to be blocked and can still respond.

Note

If you need a recap, visit the tutorials at https://www.dartlang.org/docs/tutorials/futures/ and https://www.dartlang.org/docs/tutorials/streams/. In this chapter, we will focus on recipes to handle files.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset