1. 获取输入
gets
puts '请输入内容'
content = gets
puts content
2. 输出
puts 输出字符串到屏幕(to_s),能识别转义字符,会自动换行
p 输出字符串到屏幕(inspect),不会识别转义字符,会自动换行,并会把‘’,“”一起输出
print 输出字符串,能识别转移字符,但不会自动换行
putc 输出一个字符,可用于一次输出一个字符
puts vs putc
str = ‘1234’
puts str #1234
putc str #1
puts vs print
print ‘1234’
print ‘abcd'
=>1234abcd
puts vs p
a='12345'
a[0]='\\'
a
# "\\2345"
puts a
# \2345
p a
# "\\2345"
p obj 相当于 puts obj.inspect,而 puts obj 相当于 puts obj.to_s, 使用的方便是明显区别的,p 是使用 obj 的 inspect 方法,而 puts 是 to_s 方法。
File类用于处理文件,Dir类用于处理目录
3. File
a. 常用方法
File::exist?(path) #检查是否存在
File::file?(path) #查询是否是一个文件
File::directory?(‘/usr/local/bin’) #查询是否是一个目录
=>true
File::directory?(‘file.rb’) #查询是否是一个目录
=>false
File::delete(path)
File.join(Dir.pwd,’jihuixin’)
=>/usr/local/bin/jihuixin
File::dirname(path) #返回path的目录部分.不包含最后的文件名
打开和关闭文件
b. 打开文件
File.open()
File.new()
两者不同的是 File.open方法可以与块关联
File.open(‘filename’, ‘mode’) do |aFile|
#…process the file
end
对文件的操作有几种不同的模式r,r+,w,w+,a,a+
r+,w+,a+都是表示读写模式,但是却有区别
r+如果文件不存在会报错,如果文件存在文件指针被放置在文件头,通过这种模式写入的数据会把前面的部分数据覆盖掉,
w+如果文件存在,则重写已经存在的文件,如果文件不存在会新建文件用于读写
a+如果文件存在文件指针被放置在文件末尾,如果文件不存在会新建文件用于读写
示例如下:
原始文件
r+模式打开
r+模式打开写入结果
w+模式打开
w+模式打开写入结果
a+模式打开
a+模式打开写入结果
c. 读取和写入文件
sysread(x) #读取文件前x个字符
file = File.new(‘input.txt’, ‘r’)
content = file.sysread(20)
puts content
file.close
each_byte() #方法 each_byte 是个可以迭代字符串中每个字符
file = File.new(‘input.txt’, ‘r’)
file.each_byte {|ch| putc ch; putc ?. }
file.close
类File是类IO的子类,IO.readlines和IO.foreach是IO类的一个方法
方法 foreach 与方法 readlines 之间不同的是,方法 foreach 与块相关联,并且readlines返回数组而foreach不是
readline() #逐行返回输出
file = File.new(‘input.txt’, ‘r’)
arr = file.readlines
puts arr[0]
puts arr[1]
file.close
foreach() #逐行返回输出
file = File.new(‘input.txt’, ‘r’)
file.foreach do |item|
puts item
end
file.close
syswrite() #写入文件
file = File.new(‘input.txt’, ‘w+’)
file.syswrite(“hahhahaf”)
file.close
4. Dir
a. 常用方法
Dir.pwd #返回当前目录
Dir.mkdir() #创建文件
Dir.delete() #删除文件
Dir.chdir() #切换目录
Dir.entries(‘/user/bin’).join(‘ ‘) #获取指定目录下的文件和目录列表,更简洁Dir["/usr/bin/*"]
在当前项目路径下创建文件写入内容及删除
require 'tmpdir'
tempfilename = File.join(Dir.pwd, "jihiuxin")
tempfile = File.new(tempfilename, "w")
tempfile.puts "This is a temporary file"
tempfile.close
File.delete(tempfilename)