1
resposta

Erro sendo retornado durante a execução do código

Olá ;)

Ao tentar executar o código igual ao do instrutor, recebo a mensagem de erro:

** (File.Error) could not write to file "~.elixir_teste/_build/dev/lib/elixir_teste/priv/arquivo.txt": no such file or directory
    (elixir 1.17.1) lib/file.ex:1144: File.write!/3
    iex:1: (file)

Um ajuste que pode ser realizado para que isso não aconteça, pode ser criar o diretório do arquivo caso não exista. Com isso, o código ficará dessa maneira:

defmodule ElixirTeste.EscreveNumeroAleatorio do
  def escreve do
    caminho_do_arquivo = Path.join([:code.priv_dir(:elixir_teste), "arquivo.txt"])
    caminho_do_diretorio = Path.dirname(caminho_do_arquivo)

    File.mkdir_p!(caminho_do_diretorio)

    numero_aleatorio = :rand.uniform(1000)
    File.write!(caminho_do_arquivo, "Número #{numero_aleatorio}")
  end
end

Talvez seja alguma atualização do Elixir (visto que estou vendo o treinamento hoje, um "pouco depois" do treinamento ter saído).

;)

1 resposta

Olá Murilo! Como vai?

A solução que você propôs é bastante eficaz e resolve o problema de forma elegante. Já que essa abordagem garante que o diretório onde o arquivo será salvo exista, evitando o erro.

Então, continue com o bom trabalho e não hesite em pedir ajuda sempre que precisar.

Bons estudos!