(マジで)ゼロからRubyする編 〜File.open(読み込み)〜
File.openメソッドを使って、ファイルの読み出しメソッドを作ってみる。
ファイル名:filetest.rb
$KCODE="sjis" def textline(read_filename) #Filename=read_filename data=Array.new n=0 file=File.open read_filename file.each_line do |line| line2=line.chomp data[n]=(n+1).to_s + ': '+line2 n+=1 end file.close puts(data) end
実行コマンド
require "filetest.rb" textline("kaeru.txt")
実行結果
#=>1:今日はいい天気
補足説明
textlineメソッドを作成。( )の中の引数には、read_filename という名前を入れておく。
read_filename には、読み込みファイルのファイル名を入れる。
def textline(read_filename)
読み出したデータ(値)を格納する為に、Arrayクラスのnewメソッドを呼び出す。
data=Array.new n=0
Fileクラスのopenメソッドで、read_filename ファイルを開く。
file=File.open read_filename
このopenメソッドの第1引数は、開くファイル名。第2引数には、開くモードを示す記号を指定する。
ただし、第2引数は省略すると、テキストファイルは読み込みモードで開かれるようになっている。
つまり、File.open read_filename は、
File.open(開くファイル名,開くモードを示す記号)
File.open read_filename, 'r'
each_lineメソッドでfileから1行ずつテキスト取り出し、変数lineに収める。
file.each_line do |line|
読み込んだテキストの改行を除く為に、Stringクラスのchompメソッドを使う
line2=line.chomp
読み込んだテキストの先頭に、行数を表示させる。
テキストファイル内の1行目のデータは、data[0]に格納されているので、行数は(n+1)となるが、
data[0]内の添字は整数(integer)なので、to_sメソッドを使い、文字列(string)に変換して表示。
data[n]=(n+1).to_s + ': '+line2 n+=1
textlineメソッドをincludeした(?)ファイル"filetest.rb"をrequireし、
"kaeru.txt"ファイルのテキストを読み込む。
require "filetest.rb" textline("kaeru.txt")