携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情
一、输入输出操作
在前面文章的代码中,用到的输出函数都是 puts 函数,Ruby 的内核 Kernel 模块中提供了一整套的 I/O 既输入和输出的方法,Ruby 中有一个 IO 类,它是所有输出暑促的基础,如 File 类和 Socket 类都是 IO 的子类。
Ruby 中的输出除了 puts 方法外还有 print 方法和 p 方法,它们都是 Ruby 内置的方法,而输入可以适应 gets 或者 readline 方法。
puts "Hello Ruby"
print "Hello Rails"
p "Hello"
执行上述代码,输出结果如下
Hello Ruby
Hello Rails"Hello"
puts 方法的输出会自动换行,print 不会自动换行,p 会按照原格式输出。
输入最常用的方法时 gets 方法,该方法可以用一个变量接收输入的值。
二、File 类
File 类是 IO 的子类,它是反问文件对象的过程和功能的抽象。File 类除了提供常见的读写文件的操作方法之外,还包含了大量与文件相关的功能支持,比如判断指定文件是否存在,以及文件路径转换等。
Ruby 中文件读写的流程为:
- 创建 File 类的实例化对象
- 打开文件
- 读取或者写入内容
- 关闭文件
File.new 或者 File.open 都可以创建 File 实例,File.open 由于可以接收代码块并在代码执行之后自动关闭文件,因此更常用。
f = File.new(filePath, 'w') # 创建 File 实例,并以写模式打开文件
f.puts "test" # 在文件中写入内容
f.close # 关闭文件
File.open(filePath, 'w'){ |f|
f.puts "test" # 写入模式打开,写入内容之后自动关闭文件
}
创建 File 实例时除了要传入文件路径外,还要传入第二个参数既读写模式,上述代码中 w 表示以写模式打开文件,如果第二个参数不填,默认为只读模式打开文件,除了 w 外,还有如下其他模式:
r:只读模式打开w:可写模式打开a:追加模式打开,写入的内容在原有内容尾部r+:可读可写模式打开,从文件开头位置读取或者写入w+:读写方式打开,如果文件已存在会清空文件内容再写入,如果文件不存在则会创建一个新的文件a+:追加读写方式打开,如果文件已存在,写入内容在已有内容后面,否则创建新的文件
File 类常用的 实例方法 有如下几个:
- atime:返回文件的最后访问时间,返回的是一个 Time 类的实例化对象
- ctime:返回文件的创建时间,返回的是一个 Time 类的实例化对象
- mtime:返回最后一次修改的时间,返回的是一个 Time 类的实例化对象
- path:返回文件的完整路径
- close?:判断文件时会已关闭
- eof?:判断是否已经读到文件末尾
- gets:读取并返回文件的下一行
- puts(obj)/print(obj)write(string):写入指定内容到文件中
- lineno/lineno=:返回或者设置当前的读取行号
- pos/pos=:返回或者设置挡圈读取的字节偏移位置