我正在寫一個程序,從輸入流中讀取,即二郎:從輸入流中讀取一個有效的方式
erl -run p main -noshell -s erlang halt < input
的問題是,它需要大量的時間來閱讀它(輸入流是巨大的)使用此讀取功能:
read_input(L) ->
case io:get_line("") of
eof ->
lists:reverse(L);
E0 ->
read_input([E0|L])
end.
我一直在尋找更有效的替代品,但我什麼也沒找到。我試圖用文件讀取
{ok, Binary} = file:read_file("input")
這樣遠遠高效得多。問題是我必須在名稱未知的平臺上運行該程序,所以我需要一些替代方案來實現。另外,我不能選擇跑步時使用的標誌,例如標誌-noinput不能添加到命令行。
無論您給予什麼樣的幫助,都會受到歡迎。
如果一次讀取整個文件是可以接受的,您似乎可以指出,爲什麼不只是'{ok,Binary} = file:read_file(InputFile)'?我不明白使用'cat'來複制輸入和讀取副本的意義。 –
這是一個命令行應用程序嗎?程序是否總是像這樣從命令行調用?輸入流從哪裏來?讀取數據後發生了什麼? –
@SteveVinoski我編輯了這個問題,以刪除貓的事情,因爲它是混亂。是的,我可以直接從文件中讀取它,但我不知道它的名字,所以這個解決方案只在測試時才起作用。 –