Reading Files in Dart

File handling in Dart allows you to read from and write to files on your system. This is useful for various applications, such as configuration management, data storage, and logging. Dart provides a built-in library called dart:io that enables file operations.

Importing the Required Library

To work with files in Dart, you must import the dart:io library:

import 'dart:io';

Reading a File

You can read files in Dart using several methods, including:

  1. Reading the entire file as a string
  2. Reading the file line by line
  3. Reading file contents as a list of bytes

1. Reading the Entire File as a String

To read the entire contents of a file, you can use the readAsString() method:

Example

import 'dart:io';

void main() async {
  File file = File('example.txt');

  try {
    String contents = await file.readAsString();
    print(contents);
  } catch (e) {
    print('Error: $e');
  }
}

Explanation

  • File('example.txt'): This creates a File object pointing to example.txt.
  • await file.readAsString(): This asynchronously reads the entire file contents as a string.
  • try-catch: Used to handle any errors that may occur, such as the file not being found.

2. Reading the File Line by Line

If you want to read a file line by line, use the readAsLines() method:

Example

import 'dart:io';

void main() async {
  File file = File('example.txt');

  try {
    List<String> lines = await file.readAsLines();
    for (var line in lines) {
      print(line);
    }
  } catch (e) {
    print('Error: $e');
  }
}

Explanation

  • List<String> lines = await file.readAsLines(): This reads the file line by line and stores each line in a list.
  • for (var line in lines): Iterates through each line and prints it.

3. Reading File Contents as a List of Bytes

If you need to work with binary data, you can read the file as a list of bytes using the readAsBytes() method:

Example

import 'dart:io';

void main() async {
  File file = File('example.txt');

  try {
    List<int> bytes = await file.readAsBytes();
    print('File bytes: $bytes');
  } catch (e) {
    print('Error: $e');
  }
}

Explanation

  • List<int> bytes = await file.readAsBytes(): This reads the file contents as a list of bytes.
  • The bytes are printed as a list of integers.

Handling Exceptions

File operations can result in exceptions, such as the file not existing or lack of permissions. Use try-catch blocks to handle these exceptions gracefully.

Conclusion

Reading files in Dart is straightforward with the dart:io library. You can choose from various methods to read files based on your needs, whether it's reading the entire file, reading line by line, or handling binary data. Understanding these methods will enable you to effectively manage file operations in your Dart applications.

PLAY QUIZ

Which library must you import to perform file operations in Dart?

dart:core

dart:async

dart:io

dart:collection