Erlang—在外部文件中搜索特定字符串,如果不存在,则追加文件
我想通过使用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
-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”),``您可以在模块的任何位置定义宏,但好的代码样式是在头文件或模块头文件中创建宏。