3

私はerlangをいじっていて、関数で.txtファイルを読み取る方法を見つけようとしていましたが、関連するパスからそれを読み取る方法がわかりません.基本的に、これは私のプロジェクトディレクトリを構築した方法です:

project/
  |   ebin/
  |   priv/
  |   include/
  |   src/

すべての .beam ファイルは ebin ディレクトリにあり、「priv/」ディレクトリにある .txt ファイルを開く必要があります。

これは私のコードです:

from_file(FileName) ->
    {ok, Bin} = file:read_file(FileName),
     ...

この関数を呼び出すとき、「/absolute/path/to/project/directory/priv」のような文字列を渡しますが、毎回このエラーが発生します。

exception error: no match of right hand side value {error,enoent}
     in function  read_mxm:from_file/1 (src/read_mxm.erl, line 34)
     in call from mr_tests:wc/0 (src/mr_tests.erl, line 21)

関数を呼び出している.beamファイルと同じフォルダーに.txtファイルがある場合、ファイル名「foo.txt」として入力するだけで問題なく動作します。

プロジェクトの関連するパスから関数を読み取るにはどうすればよいですか?

このようにできない場合、.beam ファイルと同じディレクトリ内のフォルダー内にあるファイルを読み取るにはどうすればよいですか?

例えば

project/
  |   ebin/
  |    |  folder_with_the_doc_that_I_want_to_read/
  |   priv/
  |   include/
  |   src/
4

1 に答える 1