एलिक्सीर (या एरलांग) में, अगर मेरे पास एक मेमोरी फ़ाइल है, तो मैं इसकी लंबाई बाइट्स में कैसे पा सकता हूं?स्मृति फ़ाइल में एलिक्सीर/एरलांग की लंबाई खोजें?
{:ok, fd} = :file.open("", [:ram, :read, :write])
:file.write(fd, "hello")
एलिक्सीर (या एरलांग) में, अगर मेरे पास एक मेमोरी फ़ाइल है, तो मैं इसकी लंबाई बाइट्स में कैसे पा सकता हूं?स्मृति फ़ाइल में एलिक्सीर/एरलांग की लंबाई खोजें?
{:ok, fd} = :file.open("", [:ram, :read, :write])
:file.write(fd, "hello")
सुनिश्चित नहीं हैं कि वहाँ एक बेहतर तरीका है, लेकिन यह मैं क्या किया है अगर:
def get_length(fd) do
{:ok, cur} = :file.position(fd, {:cur, 0})
try do
:file.position(fd, {:eof, 0})
after
:file.position(fd, cur)
end
end
उपयोग:
{:ok, fd} = :file.open("", [:ram, :read, :write])
:ok = :file.write(fd, "hello")
{:ok, len} = get_length(fd)
आप उपयोग कर सकते हैं :ram_file.get_size/1
:
iex(1)> {:ok, fd} = :file.open("", [:ram, :read, :write])
{:ok, {:file_descriptor, :ram_file, #Port<0.1163>}}
iex(2)> :file.write(fd, "hello")
:ok
iex(3)> :ram_file.get_size(fd)
{:ok, 5}
iex(4)> :file.write(fd, ", world!")
:ok
iex(5)> :ram_file.get_size(fd)
{:ok, 13}
यदि आप इलीक्सिर का उपयोग कर रहे हैं, तो आपका भी उपयोग कर सकते हैं I44 उपकरणों के रूप में तारों का इलाज करने के लिएमॉड्यूल।
# create ram file
{:ok, pid} = StringIO.open("")
# write to ram file
IO.write(pid, "foo")
IO.write(pid, "bar")
# read ram file contents
{_, str} = StringIO.contents(pid)
# calculate length
str |> byte_size |> IO.inspect # number of bytes
str |> String.length |> IO.inspect # number of Unicode graphemes
धन्यवाद @ जेसन-तु! मेरे मामले में, मुझे मौजूदा कोड के साथ काम करना है जो Erlang ': RAM 'फ़ाइलों का उपयोग कर रहा है। – jwfearn
यह बहुत साफ है, लेकिन पता है कि 'हो: किसी भी समय/हटाने को बदलने के लिए ram_file' मॉड्यूल आधिकारिक तौर पर OTP में है और इसलिए विषय undocumented है (। यह मूल रूप से एक राम फ़ाइल है) यहाँ एक उदाहरण है। – jwfearn