2016-11-04 1 views
0

Also, wenn ich eine Datei im RAM-Speicher (siehe unten Code 2) mit Elixir öffnen, wie schreibe ich in diese Datei im RAM und dann ihren Inhalt abrufen, sobald das Schreiben fertig ist? Die Mustererkennung gibt „#Port < 0,11114>“, die nicht das gleiche wie ein Datei-Handle ist PID offenbar als IO.write #Port < 0,11114>, „Hallo“ einen Fehler zurückgibt, wie:Wie schreibe ich in eine Datei im RAM in Elixier?

-Code 1

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

-Code 2

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

Würde es Ihnen etwas ausmachen, den Code zu teilen, der den Fehler verursacht? – mudasobwa

+0

Zu sagen, dass Sie in _ram_ schreiben müssen, scheint mir eine vorzeitige Optimierung zu sein. –

+0

@OnorioCatenacci - es ist nicht, ich denke, ich muss Ram schreiben, weil es auf einer Heroku-Box gemacht wird, die Sie Dateien nicht speichern lassen (Dateien, die in ihren vergänglichen Speicher geschrieben werden, würden weggewischt werden) – Nona

Antwort

1

Ok, so sollte dies für Sie arbeiten:

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

Beachten Sie, dass, wenn ich mich nicht das :write Atom im File.open Aufruf übergeben, erhalte einen :ebadf Fehler, wenn ich in die Datei zu schreiben versuchen.

Verwandte Themen