(この記事は、「fukuoka.ex x ザキ研 Advent Calendar 2017」の9日目です)
昨日は @hisaway さんの「Elixirで再帰呼び出しを使ってリストの加算関数をつくる」でしたね。
#はじめに
前回はデータの処理を行いました。(https://qiita.com/Takeshi-Kogu/items/b615bc807a02eee19d7a)
今回はElixirを用いてファイルの読み書きをしていこうと思います。
#簡単なファイルの読み書き
まず簡単に入力、出力、追加の入力を行います。
iex> File.write"ex1.txt","Hello"
:ok
iex> File.read"ex1.txt"
{:ok, "Hello"}
iex> File.write"ex1.txt"," world!",[:append]
:ok
iex> File.read"ex1.txt"
{:ok, "Hello world!"}
File.writeの第三引数に[:append]を渡しました。
:appendを指定することで追記書き込みができます。
また、:appendを指定せずに入力を繰り返してしまうと上書きされてしまいます。
iex> File.write"ex1.txt","Hello"
:ok
iex> File.write"ex1.txt","world!"
:ok
iex> File.read"ex1.txt"
{:ok, "world!"}
#入出力モジュールを用いた入出力
標準出力、標準入力を使って出力、入力します。
iex> IO.puts"Hello world!"
Hello world!
:ok
iex> IO.gets"yes or no?"
yes or no?yes
"yes\n"
IO.putsの引数に:stderr を渡すことで、標準エラーデバイスに出力します。
iex> IO.puts :stderr,"Hello world!"
Hello world!
:ok
#Fileモジュールを用いたファイルの読み書き
File モジュールを使ってファイルの読み書きをします。
デフォルトではファイルはバイナリモードで開かれるようです。
iex> {:ok, file} = File.open "ex2.txt", [:write]
{:ok, #PID<0.103.0>}
iex> IO.binwrite file, "Hello world!"
:ok
iex> File.close file
:ok
iex> File.read "ex2.txt"
{:ok, "Hello world!"}
今回はex2.txtというファイルに"Hello world!"と入力をし、出力させてみました。
ファイルを:utf8エンコーディングで開くこともできます。
詳しくはこちらを
#まとめ
今回は入出力を行なってみましたが、方法は一つでなくそれぞれの良さがあるなあと感じました。やり方自体はシンプルなのですぐに習得できそうですね。