gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:35:17 27 4
gpt4 key购买 nike

我想通过使用 erlang 逐行读取文件来检查外部文件中是否存在特定字符串。如果不存在特定字符串,我希望在文件中 append 该字符串。到目前为止,我已经设法打开文件并逐行读取文件内容。但我不知道如何进行其余的工作。我是 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]).



我得到的结果:

Hello World :开始()。{好的,<<"你好\r\nhi">>}好的

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

文件内容:你好嗨

最佳答案

如果您需要尝试在文件中查找特定文本,您可以尝试使用 re:run/2功能。以下是如何尝试在文件中查找 特定字符串 的示例,如果您没有找到该字符串 - 该字符串将被记录在 log.txt 文件中:

-module(helloworld).
-export([start/0]).

-define(LOG_FILE, "log.txt").

start() ->
read_data("file.txt").

read_data(FileName) ->
case file:read_file(FileName) of
{error, enoent} ->
io:format("File ~p not found~n", [FileName]);
{ok, Data} ->
find_text(Data)
end.

find_text(Data) ->
Text = <<"specific string">>,
case re:run(Data, Text) of
nomatch ->
write_log(Text);
_ ->
ok
end.

write_log(Text) ->
case file:read_file(?LOG_FILE) of
{ok, Data} when Data =/= <<>> ->
file:write_file(?LOG_FILE, <<Data/binary, "\n", Text/binary>>);
_ ->
file:write_file(?LOG_FILE, Text)
end.

关于Erlang - 在外部文件中搜索特定字符串,如果不存在则追加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59980746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com