【问题标题】:How to write to a file in RAM in elixir?如何在 elixir 中写入 RAM 中的文件?
【发布时间】:2016-11-05 00:11:57
【问题描述】:

因此,如果我使用 Elixir 在 RAM 内存中打开一个文件(参见下面的代码 2),我如何在 RAM 中写入该文件,然后在写入完成后检索其内容?模式匹配返回“#Port”,这与文件句柄 PID 显然不一样,因为 IO.write #Port,“hello” 返回如下错误:

代码 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>}}

【问题讨论】:

  • 您介意分享产生错误的代码吗?
  • 说你需要写到 ram 让我觉得可能是过早的优化。
  • @OnorioCatenacci - 不是,我想我必须写信给 ram,因为它是在 Heroku 盒子上完成的,它不允许你存储文件(写入临时存储的文件将被擦除)

标签: elixir


【解决方案1】:

好的,这应该适合你:

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

请注意,如果我没有在 File.open 调用中传递 :write 原子,我会在尝试写入文件时收到 :ebadf 错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多