Task

Load the entire contents of some text file as a single string variable.

If applicable, discuss: encoding selection, the possibility of memory-mapping.

Of course, in practice one should avoid reading an entire file at once
if the file is large and the task can be accomplished incrementally instead
(in which case check File IO);
this is for those cases where having the entire file is actually what is wanted.




 
defmodule FileReader do
  # Read in the file
  def read(path) do
    case File.read(path) do
      {:ok, body} ->
        IO.inspect body
      {:error,reason} ->
        :file.format_error(reason)
      end
    end
 
  # Open the file path, then read in the file
  def bit_read(path) do
    case File.open(path) do
      {:ok, file} ->
        # :all can be replaced with :line, or with a positive integer to specify the number of characters to read.
	IO.read(file,:all)
	  |> IO.inspect
      {:error,reason} ->
	:file.format_error(reason)
    end
  end
end
 