#flutter #dart
Вопрос:
Как открыть файл, используя его абсолютный путь?
await File('c:/Users/rozerro/AndroidStudioProjects/rxdart_streams/assets/sonet.txt')
.openRead()
.transform(utf8.decoder)
.transform(LineSplitter())
.toList();
так же как
c:\Users\rozerro\AndroidStudioProjects\rxdart_streams\assets\sonet.txt
Ошибка
E/flutter ( 4943): [ОШИБКА:flutter/lib/ui/ui_dart_state.cc(177)] Необработанное исключение: Исключение файловой системы: Не удается открыть файл, путь = ‘c:/Users/rozerro/AndroidStudioProjects/rxdart_streams/assets/sonet.txt’ (Ошибка ОС: Такого файла или каталога нет, errno = 2)
Комментарии:
1. Можете ли вы вставить свой путь в окно проводника, и файл откроется? Откуда вы знаете, что путь правильный? Кроме того, вы пометили этот дротик. Это чистый дротик в Windows или, может быть, трепет на эмулируемом устройстве?
2. @nvoigt это флаттер. этот путь является правильным в Windows
C:UsersrozerroAndroidStudioProjectsrxdart_streamsassetssonet.txt
3. Итак… это Флаттер на устройстве или Флаттер для рабочего стола Windows?
Ответ №1:
Вы не можете этого сделать. Вы не можете получить доступ к файлу на локальном компьютере из приложения, развернутого на вашем смартфоне.
Поскольку ваш текстовый файл находится в папке с именем assets, я предполагаю, что это какой-то файл, который вы хотите развернуть вместе с вашим приложением. В flutter это называется «активом», и вы можете прочитать о том, как этого добиться, в документации об активах и изображениях.
Короче говоря, в вашем файле pubspec.yaml должна быть запись для него:
flutter:
assets:
- assets/sonet.txt
И затем вы можете получить доступ к нему в своем источнике с помощью этого метода:
final textFromFile = await rootBundle.loadString('assets/sonet.txt');
Комментарии:
1. на самом деле приложение работает на эмуляторе
2. Что ж, если эмулятор хоть сколько-нибудь хорош, он будет имитировать тот факт, что смартфон не может этого сделать.