4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Elixirでファイルの入出力をしてみた

Last updated at Posted at 2018-06-26

(この記事は、「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エンコーディングで開くこともできます。
詳しくはこちら
#まとめ
今回は入出力を行なってみましたが、方法は一つでなくそれぞれの良さがあるなあと感じました。やり方自体はシンプルなのですぐに習得できそうですね。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?