Erlang: ошибка исключения: нет совпадения значения правой части {error, enoent} при чтении текстового файла - PullRequest
1 голос
/ 18 июня 2020

Я сейчас работаю над проектом erlang и застрял на чтении файла. Я хочу прочитать текстовый файл, который находится в папке / sr c, где все erlang и текстовый файл находятся в одной структуре. Кроме того, я не могу прочитать файл, несмотря на указание путей к файлам. Любая помощь будет принята с благодарностью.

start() ->
    {ok,DataList} = file:consult("Calls.txt"),
    io:format("** Calls to be made **"),
    io:fwrite("~w~n",[DataList]).

В файле данных хранится следующее содержимое: {john, [jill, joe, bob]}.

Ответы [ 3 ]

1 голос
/ 18 июня 2020

Попробуйте добавить имя папки к пути или попробуйте установить полный патч для файла:

1> {ok,DataList} = file:consult("src/Calls.txt").

Примечания: ошибка {error,enoent} означает, что файл не существует или у вас нет прав для чтения / записи текущего файла, для этого нужно установить права 777 или аналогичные.

1 голос
/ 22 июня 2020

Если вам нужно использовать src / call.txt, это просто означает, что ваша IDE (или вы) создали папку sr c, в которую был помещен файл calls.txt. В то же время IDE использует путь, который включает только папку верхнего уровня (т. Е. Папку root для проекта IDE). Поэтому в этом случае необходимо использовать src / call.txt. Это не проблема Erlang или даже IDE. Так устроен ваш проект.

Вы можете сделать одно из двух. Переместите файл calls.txt на один уровень вверх в файловом менеджере IDE, чтобы на него можно было ссылаться как на calls.txt, а не как на src / call.txt. Вы также можете просто изменить путь к «calls.txt», прежде чем запускать его из командной строки.

0 голосов
/ 18 июня 2020

enoent означает «Ошибка: нет записи / объекта». Это означает, что файл не найден. Когда я пробую ваш код, он работает правильно и выводит

[{john,[jill,joe,bob]}]
...