0

ばかげているように聞こえますが、3時間頭をぶつけてしまいました...!! ファイルベース名 (ルートフォルダーに配置) を抽出するクラスメソッドを作成しました。問題は、IO.readlines メソッドがフェッチから返されたベース名を持つファイルを受け入れないことです。エラーを返します:

./lib/fileCheck.rb:36:in `readlines': No such file or directory -  (Errno::ENOENT)

しかし、readlines にファイル ベース名を手動で入力するとすぐに機能します。クラスメソッドは次のとおりです。

class FileCheck
  def self.read_file
    file = File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
    file = IO.readlines(file)
    return file
  end
end

結果はありませんが、ファイル名を手動で配置するとすぐに完全に機能します。

  def self.read_file
  #file = File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s)
  file = IO.readlines('sample.txt')
  return file
 end

irbとステートメントで確認します

File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s) 

クラス文字列のファイルベース名を返しています。

助言がありますか?????

4

1 に答える 1

1

expand_pathまたはを使用しても問題ありませんjoin。あなたのコードにはまだ市長の問題があります:

File.basename(Dir[File.join(File.expand_path('../.'), "*.txt")].to_s) 

配列を返すとDir[]も呼ばれます。Dir.globを呼び出す代わりに、必ず要素の 1 つを選択してto_sください。複数のファイルがある場合、問題が発生します。

于 2013-10-22T14:31:22.473 に答える