本文共 4797 字,大约阅读时间需要 15 分钟。
puts "请输入名字"name = getsputs "hello #{name}"
aFile = File.new("filename", "mode") # ... 处理文件aFile.closeFile.open("filename", "mode") do |aFile| # ... process the fileend文件的读写模式就是 r, r+, w, w+, a, a+
aFile = File.new("input.txt", "r")if aFile content = aFile.sysread(20) puts contentelse puts "Unable to open file!"endsyswrite是sysread的对称方法
Dir.chdir "/cygdrive/d/workspace/RubyWorkspace"content = File.read "test.txt"puts content注意:ruby 中调用方法的参数既可以放到括号里面也可以不放到括号里面,很灵活,也很乱!
aFile = File.new("input.txt", "r+")if aFile aFile.syswrite("ABCDEF") aFile.rewind aFile.each_byte {|ch| putc ch; putc ?. }else puts "Unable to open file!"end
arr = IO.readlines("input.txt")puts arr[0]puts arr[1]
IO.foreach("input.txt"){|block| puts block}
puts File::exists?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.file?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File::directory?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.readable?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File::writable?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.executable?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File::zero?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.size?("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File::ftype("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.ctime("/cygdrive/d/workspace/RubyWorkspace/test.txt")puts File.atime("/cygdrive/d/workspace/RubyWorkspace/test.txt")
# chdir 可以切换目录Dir.chdir("/cygdrive/d/workspace/RubyWorkspace/")puts File.file?("test.txt")#pwd 可以看当前目录的路径puts Dir.pwd#entries 可以列出指定目录中的文件和目录列表puts Dir.entries("/cygdrive/d/workspace/RubyWorkspace/")#foreach 可以对指定目录中的文件和目录进行操作Dir.foreach("/cygdrive/d/workspace/RubyWorkspace/") do |entry| puts entryend#Dir[] 是entries更简洁的用法,注意那个 * 号,这样获取到的数组是带上完整路径的文件列表files = Dir['/cygdrive/d/workspace/RubyWorkspace/*']puts files#mkdir 可以创建目录Dir.mkdir( "mynewdir", 755 )#Dir.delete 可用于删除目录Dir.delete("mynewdir")
begin #开始 raise.. #抛出异常 rescue [ExceptionType = StandardException] #捕获指定类型的异常 缺省值是StandardException $! #表示异常信息 $@ #表示异常出现的代码位置else #其余异常 ..ensure #不管有没有异常,进入该代码块 end #结束
begin #开始 #试图打开一个不存在的文件,注意,其实直接调用open也可以!Ruby实在太乱了!不过 open 返回的是File对象而不是文件内容 file = open('/cygdrive/d/workspace/notexists') if file puts "文件打开正常,path=#{file.path}" endrescue Errno::ENOENT => e #文件打不开的具体异常类型是这种,很奇怪把! #STDIN 是标准输入,此处意思是如果拿不到File对象就用标准输入对象代替,并没有什么特别的用意 file = STDIN puts "这是一种Errno::ENOENT" puts #用 e.inspect可以看到具体的异常类型 puts "e.inspect #{e.inspect}" puts # 用 e.message 可以打印出信息 puts "e.message: #{e.message}" puts #用 e.backtrace.inspect 可以打印出堆栈 puts "e.backtrace.inspect: #{e.backtrace.inspect}" puts puts "异常信息: #{$!}" puts puts "异常代码位置: #{$@}"rescue StandardError => e #获取e对象 #STDIN 是标准输入,此处意思是如果拿不到File对象就用标准输入对象代替,并没有什么特别的用意 file = STDIN puts "这是一种StandardError" #默认都是StandardErrorrescue => e #还可以直接不写类型,意思是所有类型,相当于else了 #STDIN 是标准输入,此处意思是如果拿不到File对象就用标准输入对象代替,并没有什么特别的用意 file = STDIN puts "不知道是什么类型的Error"ensure puts "怎样都会进入的代码"end #结束#逗号隔开并不是连在一起输出,而是多次调用print方法的意思print file, " == ", STDIN
def promptAndGet(prompt) print prompt res = readline.chomp throw :quitRequested if res == "!" return resendcatch :quitRequested do name = promptAndGet("Name: ") age = promptAndGet("Age: ") sex = promptAndGet("Sex: ") # .. # 处理信息endpromptAndGet("Class:")
转载地址:http://mcdrj.baihongyu.com/