Класс файла (абстрактный)
Ссылка на файл в файловой системе.
Экземпляр класса File — это объект, содержащий путь path к файлу, над которым можно выполнять операции. Вы можете получить родительский каталог файла с помощью геттера parent, унаследованного от FileSystemEntity.
Создайте новый объект File с полным именем файла, чтобы получить доступ к указанному файлу в файловой системе из вашей программы.
var myFile = new File('file.txt');
Класс File содержит методы для работы с файлами и их содержимым. С помощью этих методов вы можете открыть и закрыть файлы, читать и писать в них, создавать и удалять их, а также проверять их существование.
При чтении или записи файла вы можете использовать потоки (с помощью openRead), операции произвольного доступа (с помощью open) или удобные методы, такие как readAsString.
Большинство методов в этом классе имеют синхронные и асинхронные пары, например, readAsString и readAsStringSync. Если у вас нет конкретной причины использовать синхронную версию метода, используйте асинхронную версию, чтобы избежать блокирования вашей программы.
Если путь является ссылкой
Если path — это символическая ссылка, а не файл, то методы класса File работают с конечным объектом ссылки, за исключением delete и deleteSync, которые работают со ссылкой.
Чтение из файла
В следующем примере кода содержимое файла читается как строка с использованием асинхронного метода readAsString:
import 'dart:async';
import 'dart:io';
void main() {
new File('file.txt').readAsString().then((String contents) {
print(contents);
});
}
Более гибкий и полезный способ чтения файла — с помощью потока (Stream). Откройте файл с помощью openRead, который возвращает поток, предоставляющий данные в файле как куски байтов. Подпишитесь на поток для получения данных и обрабатывайте их по мере необходимости. Вы можете использовать различные преобразователи последовательно, чтобы преобразовать данные в требуемый формат или подготовить их для вывода.
Вы можете использовать поток для чтения больших файлов, для обработки данных с помощью преобразователей или для совместимости с другим API, например, с WebSocketами.
import 'dart:io';
import 'dart:convert';
import 'dart:async';
main() {
final file = new File('file.txt');
Stream<List<int>> inputStream = file.openRead();
inputStream
.transform(UTF8.decoder) // Decode bytes to UTF8.
.transform(new LineSplitter()) // Convert stream to individual lines.
.listen((String line) { // Process results.
print('$line: ${line.length} bytes');
},
onDone: () { print('File is now closed.'); },
onError: (e) { print(e.toString()); });
}
Запись в файл
Чтобы записать строку в файл, используйте метод writeAsString:
import 'dart:io';
void main() {
final filename = 'file.txt';
new File(filename).writeAsString('some content')
.then((File file) {
// Do something with the file.
});
}
Вы также можете записывать в файл, используя поток (Stream). Откройте файл с помощью openWrite, который возвращает IOSink, в который можно записывать данные. Обязательно закройте поток с помощью метода IOSink.close.
import 'dart:io';
void main() {
var file = new File('file.txt');
var sink = file.openWrite();
sink.write('FILE ACCESSED ${new DateTime.now()}\n');
// Close the IOSink to free system resources.
sink.close();
}
Использование Futures
Чтобы избежать непреднамеренного блокирования программы, несколько методов используют Future для возврата значения. Например, метод length, который получает длину файла, возвращает Future. Используйте then для регистрации обратной функции, которая вызывается, когда значение готово.
import 'dart:io';
main() {
final file = new File('file.txt');
file.length().then((len) {
print(len);
});
}
Помимо length, методы exists, lastModified, stat и другие возвращают Futures.
Другие ресурсы
-
Dart by Example предоставляет дополнительные примеры кода, ориентированные на задачи, показывающие, как использовать различные API из класса Directory и связанного с ним класса File.
-
I/O для командных приложений — раздел из Обзора библиотек Dart, посвященный файлам и каталогам.
-
Создание приложений командной строки, учебник о создании приложений командной строки, включает информацию о файлах и каталогах.
- Реализует
Конструкторы
- File(String path) factory
-
Создает объект File.
- File.fromUri(Uri uri) factory
-
Создает объект File из URI.
Свойства
- absolute → File только для чтения
-
Возвращает экземпляр, путь которого является абсолютным путём к
this. - path → String только для чтения
-
Получить путь к файлу.
- hashCode → int только для чтения, унаследованно
-
Код хэша для этого объекта.
- isAbsolute → bool только для чтения, унаследованно
-
Возвращает значение, указывающее, является ли путь этого объекта абсолютным.
- parent → Directory только для чтения, унаследованно
-
Каталог, содержащий
this. - runtimeType → Type только для чтения, унаследованно
-
Представление runtime-типа объекта.
- uri → Uri только для чтения, унаследованно
-
Возвращает
Uri, представляющий расположение сущности файловой системы.
Операторы
- operator ==(
other) → bool унаследованно -
Оператор равенства.
Методы
- copy(
String newPath) → Future<File> -
Копирует этот файл. Возвращает
Future<File>, который завершается объектом File скопированного файла. - copySync(
String newPath) → File -
Синхронно копирует этот файл. Возвращает объект File скопированного файла.
- create(
{bool recursive: false }) → Future<File> -
Создаёт файл. Возвращает
Future<File>, который завершается файлом после его создания. - createSync(
{bool recursive: false }) → void -
Синхронно создаёт файл. Существующие файлы не изменяются методом createSync. Вызов createSync для существующего файла может завершиться ошибкой, если на файл установлены ограничения доступа.
- lastAccessed(
) → Future<DateTime> -
Получить время последнего доступа к файлу.
- lastAccessedSync(
) → DateTime -
Получить время последнего доступа к файлу.
- lastModified(
) → Future<DateTime> -
Получить время последнего изменения файла.
- lastModifiedSync(
) → DateTime -
Получить время последнего изменения файла.
- length(
) → Future<int> -
Получить размер файла. Возвращает
Future<int>, который завершается размером в байтах. - lengthSync(
) → int -
Синхронно получить размер файла.
- open(
{FileMode mode: FileMode.READ }) → Future<RandomAccessFile> -
Открыть файл для операций произвольного доступа. Возвращает
Future<RandomAccessFile>, который завершается открытым файлом произвольного доступа. RandomAccessFile необходимо закрывать, используя метод RandomAccessFile.close. - openRead(
[int start, int end ]) → Stream<List<int>> -
Создаёт новый независимый поток Stream для содержимого этого файла.
- openSync(
{FileMode mode: FileMode.READ }) → RandomAccessFile -
Синхронно открыть файл для операций произвольного доступа. Результатом является RandomAccessFile, на котором можно выполнять операции произвольного доступа. Открытые RandomAccessFile необходимо закрывать, используя метод RandomAccessFile.close.
- openWrite(
{FileMode mode: FileMode.WRITE, Encoding encoding: UTF8 }) → IOSink -
Создаёт новый независимый IOSink для файла. IOSink необходимо закрыть, когда он больше не используется, чтобы освободить системные ресурсы.
- readAsBytes(
) → Future<List<int>> -
Прочитать всё содержимое файла как список байтов. Возвращает
Future<List<int>>, который завершается списком байтов, представляющих содержимое файла. - readAsBytesSync(
) → List<int> -
Синхронно прочитать всё содержимое файла как список байтов.
- readAsLines(
{Encoding encoding: UTF8 }) → Future<List<String>> -
Прочитать всё содержимое файла построчно с указанной кодировкой.
- readAsLinesSync(
{Encoding encoding: UTF8 }) → List<String> -
Синхронно прочитать всё содержимое файла построчно с указанной кодировкой.
- readAsString(
{Encoding encoding: UTF8 }) → Future<String> -
Прочитать всё содержимое файла как строку с указанной кодировкой.
- readAsStringSync(
{Encoding encoding: UTF8 }) → String -
Синхронно прочитать всё содержимое файла как строку с указанной кодировкой.
- rename(
String newPath) → Future<File> -
Переименовывает этот файл. Возвращает
Future<File>, который завершается объектом File переименованного файла. - renameSync(
String newPath) → File -
Синхронно переименовывает этот файл. Возвращает объект File переименованного файла.
- setLastAccessed(
DateTime time) → Future -
Изменяет время последнего доступа к файлу.
- setLastAccessedSync(
DateTime time) → void -
Синхронно изменяет время последнего доступа к файлу.
- setLastModified(
DateTime time) → Future -
Изменяет время последнего изменения файла.
- setLastModifiedSync(
DateTime time) → void -
Синхронно изменяет время последнего изменения файла.
- 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 -
Синхронно записать строку в файл.
- delete(
{bool recursive: false }) → Future<FileSystemEntity> inherited -
Удаляет этот FileSystemEntity.
- deleteSync(
{bool recursive: false }) → void inherited -
Синхронно удаляет этот FileSystemEntity.
- exists(
) → Future<bool> inherited -
Проверяет существование файла по указанному пути. Возвращает
Future<bool>, который завершается результатом. - existsSync(
) → bool inherited -
Синхронно проверяет существование файла по указанному пути.
- noSuchMethod(
Invocation invocation) → dynamic inherited -
Вызывается при обращении к несуществующему методу или свойству.
- resolveSymbolicLinks(
) → Future<String> inherited -
Разрешает путь к файловой системе относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все
..и.сегменты пути. - resolveSymbolicLinksSync(
) → String inherited -
Разрешает путь к файловой системе относительно текущей рабочей директории, разрешая все символические ссылки в пути и разрешая все
..и.сегменты пути. - stat(
) → Future<FileStat> inherited -
Вызывает функцию stat() операционной системы для пути path этого объекта FileSystemEntity. Идентично
FileStat.stat(this.path). - statSync(
) → FileStat inherited -
Синхронно вызывает функцию stat() операционной системы для пути path этого объекта FileSystemEntity. Идентично
FileStat.statSync(this.path). - toString(
) → String inherited -
Возвращает строковое представление этого объекта.
- watch(
{int events: FileSystemEvent.ALL, bool recursive: false }) → Stream<FileSystemEvent> inherited -
Начинает отслеживание объекта FileSystemEntity на предмет изменений.
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/File-class.html