Spec-Zone.ru › Dart 2

dart:io

Класс File

Ссылка на файл в файловой системе.

Объект File хранит путь, по которому можно выполнять операции. Получить родительский каталог файла можно с помощью свойства parent, унаследованного от FileSystemEntity.

Создайте новый объект File, указав путь, чтобы получить доступ из программы к заданному файлу в файловой системе.

var myFile = File('file.txt');

Класс File содержит методы для работы с файлами и их содержимым. С помощью методов этого класса можно открывать и закрывать файлы, читать из них и записывать в них данные, создавать и удалять их, а также проверять их наличие.

Для чтения и записи файла можно использовать потоки (с помощью openRead), операции произвольного доступа (с помощью open) или удобные методы, например readAsString,

Большинство методов этого класса доступны в синхронной и асинхронной версиях, например readAsString и readAsStringSync. Если у вас нет особой причины использовать синхронную версию метода, отдавайте предпочтение асинхронной, чтобы избежать блокировки программы.

Если путь является ссылкой

Если path — символическая ссылка, а не файл, методы File работают с конечной целью ссылки, за исключением delete и deleteSync, которые работают со ссылкой.

Чтение из файла

В следующем примере кода всё содержимое файла считывается в виде строки с помощью асинхронного метода readAsString:

import 'dart:async';
import 'dart:io';

void main() {
  File('file.txt').readAsString().then((String contents) {
    print(contents);
  });
}

Более гибкий и удобный способ чтения файла — использовать Stream. Откройте файл с помощью openRead. Этот метод возвращает поток, предоставляющий данные файла порциями байтов. Читайте поток, чтобы обрабатывать содержимое файла по мере его поступления. Можно последовательно применять различные преобразователи, чтобы привести содержимое файла к нужному формату или подготовить его к выводу.

Поток может быть полезен при чтении больших файлов, преобразовании данных с помощью преобразователей или для совместимости с другим API, например с WebSocket.

import 'dart:io';
import 'dart:convert';
import 'dart:async';

void main() async {
  final file = File('file.txt');
  Stream<String> lines = file.openRead()
    .transform(utf8.decoder)       // Decode bytes to UTF-8.
    .transform(LineSplitter());    // Convert stream to individual lines.
  try {
    await for (var line in lines) {
      print('$line: ${line.length} characters');
    }
    print('File is now closed.');
  } catch (e) {
    print('Error: $e');
  }
}

Запись в файл

Чтобы записать строку в файл, используйте метод writeAsString:

import 'dart:io';

void main() async {
  final filename = 'file.txt';
  var file = await File(filename).writeAsString('some content');
  // Do something with the file.
}

Записывать данные в файл можно также с помощью Stream. Откройте файл с помощью openWrite. Метод возвращает IOSink, в который можно записывать данные. Не забудьте закрыть sink с помощью метода IOSink.close.

import 'dart:io';

void main() {
  var file = File('file.txt');
  var sink = file.openWrite();
  sink.write('FILE ACCESSED ${DateTime.now()}\n');

  // Close the IOSink to free system resources.
  sink.close();
}

Использование асинхронных методов

Чтобы избежать непреднамеренной блокировки программы, несколько методов являются асинхронными и возвращают Future. Например, метод length, возвращающий длину файла, возвращает Future. Дождитесь завершения future, чтобы получить результат, когда он будет готов.

import 'dart:io';

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

  var length = await file.length();
  print(length);
}

Помимо length, асинхронными являются методы exists, lastModified, stat и другие.

Другие ресурсы

  • Раздел Файлы и каталоги в обзоре библиотек.

  • В руководстве Создание приложений командной строки приведена информация о файлах и каталогах.

Реализуемые типы
  • FileSystemEntity

Конструкторы

File(String path)
factory
Создаёт объект File.
File.fromRawPath(Uint8List rawPath)
factory
Создаёт объект File из необработанного пути.
File.fromUri(Uri uri)
factory
Создаёт объект File из URI.

Свойства

absolute → File
read-onlyoverride
Объект File с абсолютным путём path.
hashCode → int
read-onlyinherited
Хеш-код этого объекта.
isAbsolute → bool
read-onlyinherited
Является ли путь этого объекта абсолютным.
parent → Directory
read-onlyinherited
Родительский каталог этой сущности.
path → String
read-onlyoverride
Возвращает путь к файлу.
runtimeType → Type
read-onlyinherited
Представление типа объекта во время выполнения.
uri → Uri
read-onlyinherited
Объект Uri, представляющий расположение сущности файловой системы.

Методы

copy(String newPath) → Future<File>
Копирует этот файл.
copySync(String newPath) → File
Синхронно копирует этот файл.
create({bool recursive = false, bool exclusive = false}) → Future<File>
Создаёт файл.
createSync({bool recursive = false, bool exclusive = false}) → void
Синхронно создаёт файл.
delete({bool recursive = false}) → Future<FileSystemEntity>
inherited
Удаляет эту FileSystemEntity.
deleteSync({bool recursive = false}) → void
inherited
Синхронно удаляет эту FileSystemEntity.
exists() → Future<bool>
inherited
Проверяет, существует ли сущность файловой системы по этому пути.
existsSync() → bool
inherited
Синхронно проверяет, существует ли сущность файловой системы по этому пути.
lastAccessed() → Future<DateTime>
Время последнего доступа к файлу.
lastAccessedSync() → DateTime
Время последнего доступа к файлу.
lastModified() → Future<DateTime>
Возвращает время последнего изменения файла.
lastModifiedSync() → DateTime
Возвращает время последнего изменения файла.
length() → Future<int>
Длина файла.
lengthSync() → int
Синхронно возвращает длину файла.
noSuchMethod(Invocation invocation) → dynamic
inherited
Вызывается при обращении к несуществующему методу или свойству.
open({FileMode mode = FileMode.read}) → Future<RandomAccessFile>
Открывает файл для операций произвольного доступа.
openRead([int? start, int? end]) → Stream<List<int>>
Создаёт новый независимый Stream для содержимого этого файла.
openSync({FileMode mode = FileMode.read}) → RandomAccessFile
Синхронно открывает файл для операций произвольного доступа.
openWrite({FileMode mode = FileMode.write, Encoding encoding = utf8}) → IOSink
Создаёт новый независимый IOSink для файла.
readAsBytes() → Future<Uint8List>
Считывает всё содержимое файла в виде списка байтов.
readAsBytesSync() → Uint8List
Синхронно считывает всё содержимое файла в виде списка байтов.
readAsLines({Encoding encoding = utf8}) → Future<List<String>>
Считывает всё содержимое файла в виде строк текста, используя заданную Encoding.
readAsLinesSync({Encoding encoding = utf8}) → List<String>
Синхронно считывает всё содержимое файла в виде строк текста, используя заданную Encoding.
readAsString({Encoding encoding = utf8}) → Future<String>
Считывает всё содержимое файла в виде строки, используя заданную Encoding.
readAsStringSync({Encoding encoding = utf8}) → String
Синхронно считывает всё содержимое файла в виде строки, используя заданную Encoding.
rename(String newPath) → Future<File>
override
Переименовывает этот файл.
renameSync(String newPath) → File
override
Синхронно переименовывает этот файл.
resolveSymbolicLinks() → Future<String>
inherited
Определяет путь объекта файловой системы относительно текущего рабочего каталога.
resolveSymbolicLinksSync() → String
inherited
Синхронно определяет путь объекта файловой системы относительно текущего рабочего каталога.
setLastAccessed(DateTime time) → Future
Изменяет время последнего доступа к файлу.
setLastAccessedSync(DateTime time) → void
Синхронно изменяет время последнего доступа к файлу.
setLastModified(DateTime time) → Future
Изменяет время последнего изменения файла.
setLastModifiedSync(DateTime time) → void
Синхронно изменяет время последнего изменения файла.
stat() → Future<FileStat>
inherited
Вызывает функцию stat() операционной системы для path.
statSync() → FileStat
inherited
Синхронно вызывает функцию stat() операционной системы для path.
toString() → String
inherited
Строковое представление этого объекта.
watch({int events = FileSystemEvent.all, bool recursive = false}) → Stream<FileSystemEvent>
inherited
Начинает отслеживать изменения FileSystemEntity.
writeAsBytes(List<int> bytes, {FileMode mode = FileMode.write, bool flush = false}) → Future<File>
Записывает список байтов в файл.
writeAsBytesSync(List<int> bytes, {FileMode mode = FileMode.write, bool flush = false}) → void
Синхронно записывает список байтов в файл.
writeAsString(String contents, {FileMode mode = FileMode.write, Encoding encoding = utf8, bool flush = false}) → Future<File>
Записывает строку в файл.
writeAsStringSync(String contents, {FileMode mode = FileMode.write, Encoding encoding = utf8, bool flush = false}) → void
Синхронно записывает строку в файл.

Операторы

operator ==(Object other) → bool
inherited
Оператор равенства.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/File-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API