2016-12-11 6 views
-3

に文字列の暗黙的な変換がない私はこのような空のHTML-ファイルを読んでいます:Railsの4:例外TypeError - 整数

file = File.read("file_path/file.html", "wb") 

なぜそれがこのTypeError例外を投げるのか?

整数に文字列の暗黙の型変換なし



ログ:ファイルが空の場合

Completed 500 Internal Server Error in 8ms (ActiveRecord: 0.0ms) 

TypeError (no implicit conversion of String into Integer): 
    app/controllers/abc_controller.rb:49:in `read' 
    app/controllers/abc_controller.rb:49:in `build' 
+0

ショーフル例外ログファイルが空であるかないかどうかを確認する方法は、ログエントリ – sig

+0

@sigを追加してください? – jonhue

答えて

2

、何を正確に読んでもらいたいですか?

File#readの2番目のパラメータはオプションで、ファイルから読み込むストリングの長さにする必要があります。 "wb"は整数ではないため、エラーメッセージが表示されます。

あなたが使用したパラメータは、openのようになります。

あなたがファイルを読みたい場合は、単にあなたがそれを書きたい場合は、あなたが

File.open(filename,'w+') do |file| 
    file.puts "content" 
end 
を使用することができ、ファイル

を書く

content = File.read(filename) 

を使用し、ファイル

を読みます

'w+'は、ファイルモードです。

ファイルが存在する場合は、既存のファイルを上書きします。ファイルに が存在しない場合は、読み書き用の新しいファイルを作成します。

ファイル

あなたは、ファイルが存在していることを確認したい場合の有無:ファイルが空

File.exists?(filename) 

ですか?

既存のファイルが空であることを確認したい場合は

File.size(filename)==0 

ファイルは空白のフル(サイズ> 0、それでも「空」)である可能性があります。 Railsの場合:

+0

をあり – jonhue

+0

'w +'を指定すると、既存のファイルが上書きされます。ファイルが存在しない場合は作成されます。あなたは何をしたいのですか? –

+0

私が作成したファイルの内容を取得したい。しかし、そのファイルが空であるかどうかはわかりません。空の場合は、エラーが発生します。したがって、そのファイルが空であるかどうかを事前に確認する必要があります。 – jonhue

0

ファイルを読むには、wbの代わりにrbを使用できます。

data = File.open("ur path","rb") 
+0

'data'はこの場合データではなく、ファイルオブジェクトです。その内容ではありません。 –

+0

@EricDuminil Yaaあなたは正しいデータですデータを使って反復できるファイルオブジェクトです|ファイル| file.puts "content" end – Ajaykumar