2011年5月11日水曜日

Ruby言語 ファイル

puts "################出入力###################"
puts "引数に1 2 3を渡す"
expression = ARGV.join(' + ')   #joinで文字列の結合
total = ARGV.inject(0){|subtotal, arg|   #inject(0)はsubtotalの初期値で、argに要素を渡します。
    p subtotal
    p arg
    subtotal + arg.to_i
}

puts expression   #=>1 + 2 + 3
puts total    #=>6


puts "################ファイル###################"

i = 0
File.open("opentext.txt"){|text|  #openでファイルを開きます
    puts "読み込み開始します"
    contents = text.read
    print contents + "\n"
    puts "読み込み終了します"
}


puts "################ファイル###################"

File.open("opentext.txt",'a'){|text|
    puts "書き込み開始します"
    text.puts Time.now
    puts "書き込み終了します"
}

puts "################ファイル###################"

File.open("opentext2.txt",File::WRONLY|File::CREAT){|text|
    puts "書き込み開始します"
    text.puts Time.now
    puts "書き込み終了します"
}


puts "################ファイル###################"
File.open("opentext2.txt"){|text|
    puts "読み込み開始します"
    text.each_line do |line|   #一行ずつ読み込み ブロックに行の内容を渡す。
        p text.lineno    #現在の行番号
        if(line == "\n")
            puts "\\nです"
        end
        p line#.chomp    #現在の行を表示chompは改行を削除します
    end
    puts "読み込み終了します"
}


puts "################ファイル###################"
File.open("opentext2.txt",'r+b'){|text|
    print "#{text.pos}"    #ファイルポインタの現在の位置を整数で返します
    print text.gets
    print "#{text.pos}"
    puts bytes = text.read(3)
    print "#{text.pos}:\n"
    text.pos -= 3
    print "#{text.pos}:\n"
    text.write bytes
    print "#{text.pos}"
    text.pos = 0
    print text.gets    #1行取得
    print "#{text.pos}:"
    text.seek(-3,File::SEEK_END)#最後の行へ移動し3バイト戻る
    print "#{text.pos}"
    puts text.getc     #1バイト読み込み
    print "#{text.pos}"
    p text.getc
    print "#{text.pos}"
    #readcharは読み取るバイトが存在しないとき例外を発生することを除き同じ動き
    puts text.readchar #読み取り行がない場合例外
}


puts "################ファイル###################"

p $stdin
p $stdout
p $stderr
$stderr.printf("%X\n",0xcafe)


puts "################ファイル###################"
File.open("opentext2.txt",'w'){|text|
    p text
    $stdout = text    #標準出力先をコマンドラインから指定ファイルに変更
    p $stdout
    puts "Welcome to Glubbdubdrib"
    p text
    p STDOUT
    $stdout = STDOUT  #標準出力をもとにもどす
    p $stdout
}

puts "################ファイルIO###################"

require 'stringio'#stringioの読み込み、StringIOを使うため
buffer = String.new#StringIOで使うStringオブジェクト bufferとはデータの蓄積先

sio = StringIO.new(buffer)#StringIOに渡す
p $stdout
$stderr = $stdout = sio#出力先を変更
puts "untuh"
warn "outed"
$stdout = STDOUT
puts buffer
puts sio
$stderr = STDOUT

0 件のコメント:

コメントを投稿