【问题标题】:Erlang : exception error: no match of right hand side value {error,enoent} while reading a text fileErlang:异常错误:读取文本文件时右侧值{error,enoent}不匹配
【发布时间】:2020-10-08 16:13:31
【问题描述】:

我目前正在处理一个 erlang 项目并一直在阅读文件。我想读取 /src 文件夹中的文本文件,其中所有 erlang 和文本文件的结构相同。然后,尽管指定了文件路径,我也无法读取文件。任何帮助将不胜感激。

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

数据文件存储如下内容:{john, [jill,joe,bob]}。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    enoent 表示“错误:无条目/实体”。这意味着找不到该文件。当我尝试您的代码时,它可以正常工作并输出

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

    【讨论】:

    • 你能帮我知道我的系统出了什么问题吗?我应该设置哪些额外的文件路径?我在 /src 文件夹中有我的 erlang 代码和文本文件,但仍然无法读取该文件。我该如何解决这个问题?
    • 你是如何运行代码的?当您将完整路径指定为 consult 的参数时会发生什么?
    • c(交换)。交换:开始()。我像这样运行代码。显示相同的错误。
    • pwd(). 在 erlang shell 中返回什么?
    • c:/Users/ayush/Desktop/erl-23.0/usr 在 pwd() 上返回。
    【解决方案2】:

    尝试将文件夹名称添加到路径或尝试为文件设置完整补丁:

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

    注意:错误{error,enoent}表示文件不存在或者你没有权限读/写当前文件,这种情况需要设置777权限或类似权限。

    【讨论】:

      【解决方案3】:

      如果您需要使用 src/call.txt,那么这仅仅意味着您的 IDE(或您)已经创建了一个 src 文件夹,其中放置了 calls.txt 文件。同时,IDE 使用的路径仅包含顶级文件夹(即 IDE 项目的根文件夹)。所以在这种情况下必须使用 src/call.txt。这对 Erlang 甚至 IDE 来说都不是问题。这就是您的项目的设置方式。

      你可以做两件事中的任何一件。在 IDE 文件管理器中将 calls.txt 文件上移一级,以便可以将其引用为 calls.txt,而不是 src/call.txt。您也可以在从命令行运行之前将路径更改为“calls.txt”。

      【讨论】:

        猜你喜欢
        • 2014-02-06
        • 2015-12-06
        • 2019-02-27
        • 2016-05-05
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 2016-06-28
        • 2013-10-26
        相关资源
        最近更新 更多