Erlang—在外部文件中搜索特定字符串,如果不存在,则追加文件

Erlang—在外部文件中搜索特定字符串,如果不存在,则追加文件,erlang,append,file-read,file-search,Erlang,Append,File Read,File Search,我想通过使用erlang逐行读取文件来检查外部文件中是否存在特定的字符串。如果特定字符串不存在,我希望在文件中附加该字符串。 到目前为止,我已经设法打开文件并逐行读取文件内容。但我不知道如何继续进行其余的工作。 我是新来的二郎,所以在这个问题上的任何帮助都将非常感谢 到目前为止我所尝试的: -module(helloworld). -export([readlines/1,get_all_lines/1,start/0]). readlines(FileName) -> {o

我想通过使用erlang逐行读取文件来检查外部文件中是否存在特定的字符串。如果特定字符串不存在,我希望在文件中附加该字符串。 到目前为止,我已经设法打开文件并逐行读取文件内容。但我不知道如何继续进行其余的工作。 我是新来的二郎,所以在这个问题上的任何帮助都将非常感谢

到目前为止我所尝试的:

-module(helloworld). 
-export([readlines/1,get_all_lines/1,start/0]). 

readlines(FileName) ->
    {ok, Device} = file:open(FileName, [read]),
    try get_all_lines(Device)
      after file:close(Device)
    end.

get_all_lines(Device) ->
    case io:get_line(Device, "") of
        eof  -> [];
        Line -> Line ++ get_all_lines(Device)
    end.



start() ->
    

readlines("D:\\documents\\file.txt"),
Txt=file:read_file("D:\\documents\\file.txt"),
io:fwrite("~p~n", [Txt]).



结果是什么:

-module(helloworld). 
-export([readlines/1,get_all_lines/1,start/0]). 

readlines(FileName) ->
    {ok, Device} = file:open(FileName, [read]),
    try get_all_lines(Device)
      after file:close(Device)
    end.

get_all_lines(Device) ->
    case io:get_line(Device, "") of
        eof  -> [];
        Line -> Line ++ get_all_lines(Device)
    end.



start() ->
    

readlines("D:\\documents\\file.txt"),
Txt=file:read_file("D:\\documents\\file.txt"),
io:fwrite("~p~n", [Txt]).



helloworld:start()。 {好的,} 嗯

我正在使用的示例文件: 文件名:“file.txt”

文件内容: 你好
您好

如果您需要尝试在文件中查找特定文本,您可以尝试使用该功能。 下面是一个示例,您可以尝试在文件中查找
特定字符串
,如果找不到该字符串,该字符串将记录在
log.txt
文件中:

-模块(helloworld)。
-导出([start/0])。
-定义(日志文件“LOG.txt”)。
开始()->
读取数据(“file.txt”)。
读取数据(文件名)->
案例文件:的读取文件(文件名)
{错误,enoint}->
io:格式(“未找到文件~p~n”,[FileName]);
{好的,数据}->
查找文本(数据)
结束。
查找文本(数据)->
Text=,
案例re:运行(数据、文本)
nomatch->
写日志(文本);
_ ->
好啊
结束。
写日志(文本)->
案例文件:读取的文件(?日志文件)
{ok,Data}当Data=/=->
文件:写入文件(?日志文件,);
_ ->
文件:写入文件(?日志文件,文本)
结束。

非常感谢您的帮助!!代码片段非常有用。我们能在函数中定义宏吗?类似于下面给出的代码?模块(helloworld)-导出([createVariables/2,start/0])。createVariables(ProjectName,UserName)->-define(PROJECT\u NAME,ProjectName),-define(USER\u NAME,UserName)。start()->createVariables(“dev_test_007”、“abcd”),``您可以在模块的任何位置定义宏,但好的代码样式是在头文件或模块头文件中创建宏。