Spec-Zone.ru › Dart 2

dart:io

Класс File

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

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

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

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

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

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

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

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

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

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

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

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

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

Более гибкий и полезный способ чтения файла — с помощью потока. Откройте файл с помощью 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.
}

Вы также можете записать в файл, используя поток. Откройте файл с помощью openWrite, который возвращает IOSink, в который вы можете записать данные. Убедитесь, что вы закрываете поток с помощью метода 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. Дождитесь, пока будущее получит результат, когда он будет готов.

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
только для чтения, переопределено
File с абсолютным путем пути.
hashCode → int
только для чтения, унаследовано
Код хэша для этого объекта.
isAbsolute → bool
только для чтения, унаследовано
Является ли путь этого объекта абсолютным.
parent → Directory
только для чтения, унаследовано
Родительский каталог этого элемента.
path → String
только для чтения, переопределено
Получить путь к файлу.
runtimeType → Type
только для чтения, унаследовано
Представление типа объекта во время выполнения.
uri → Uri
только для чтения, унаследовано
Uri, представляющий расположение сущности файловой системы.

Методы

copy(String newPath) → Future<File>
Копирует этот файл.
copySync(String newPath) → File
Синхронно копирует этот файл.
create({bool recursive = false}) → Future<File>
Создаёт файл.
createSync({bool recursive = 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.18.5/dart-io/File-class.html

Spec-Zone.ru

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