2016-11-04 9 views
0

もし私がElixirのRAMメモリ(下のコード2を参照)にファイルを開いたら、そのファイルをRAMに書き込んで書き込みが終わったらその内容を取得するにはどうしたらいいですか?エリキシル中のRAMにファイルを書き込む方法は?

コード:IO.write #Port < 0.11114>は、「こんにちは」などのエラーを返します明らかとファイルハンドルPIDと同じではありませんパターンマッチが戻る「#Port < 0.11114>」、 1

** (CaseClauseError) no case clause matching: {#Port<0.11114>} 
    (elixir) lib/io.ex:495: IO.write/2 

コード2

File.open("text.txt", [:ram]) 
# => {:ok, {:file_descriptor, :ram_file, #Port<0.11114>}} 
+0

エラーを生成するコードを共有してもよろしいですか? – mudasobwa

+0

あなたは_ram_に書き込む必要があると言って、時期尚早の最適化の可能性が高いと私に警告します。 –

+0

@OnorioCatenacci - それはあなたがファイルを保存できないHerokuボックスで実行されているので、私はラムに書き込む必要があると思います(エフェメラルストアに書き込まれたファイルは拭き取られます) – Nona

答えて

1

[OK]を、これはあなたのために働く必要がありますので:

{:ok, file} = File.open("text.txt",[:ram, :write]) 
IO.binwrite(file,"This is a test") 

私はFile.openコールで:write原子を渡さない場合、私は、ファイルへの書き込みをしようとしたとき、私は:ebadfエラーを取得していることに注意してください。

関連する問題