Как открыть файл для записи? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь открыть и записать файл, используя библиотеку ввода-вывода Dart.

У меня есть этот код:

File file = File("text.txt");
RandomAccessFile raf = file.openSync();
raf.writeStringSync("A string!");

Теперь при этом я получаю следующую ошибку в консоли:

(OS Error: Access is denied., errno = 5)

Итак, файл не открыт для записи, и я смотрю здесь: метод открытия , и не могу понять, как использовать open или openSync, чтобы получить RandomAccessFile Я могу пишите.

Там написано, что мне нужно использовать константа записи , но просто не могу понять, как? Если я пытаюсь создать FileMode и добавить его к методу open в качестве аргумента, я получаю сообщение об ошибке:

Error: Too many positional arguments: 0 allowed, but 1 found.

Итак, методы open и openSync не могут принимать никаких аргументов. Как можно использовать методы FileMode и open для открытия файла, готового к записи? Итак, мне нужно получить RandomAccessFile, который находится в режиме записи? И по умолчанию его только в режиме чтения? Я не пытаюсь использовать writeString или writeStringSync, я знаю, что эти методы существуют, но мне интересно, как это сделать, используя open и openSync методы, которые возвращают RandomAccessFile!

Обновление:

1 Ответ

1 голос
/ 01 апреля 2019

Вы получаете эту ошибку:

Ошибка: слишком много позиционных аргументов: 0 разрешено, но найдено 1.

потому что метод openSync не имеет позиционных аргументов, а только один именованный параметр (mode). Поэтому, чтобы исправить свой код, вы должны добавить его:

RandomAccessFile raf = file.openSync(mode: FileMode.append); //Or whatever mode you'd to apply

Сказав это, есть несколько других способов записи в файл, большинство из которых перечислены в документации:

  • writeString или writeStringSync , я бы посоветовал это, если вам нужно просто записать один раз в файл.

  • openWrite , который возвращает Stream, который может быть записан для записи в файл.

(Все эти методы имеют FileMode mode именованный параметр)

...