输入输出:
标准输入:
a = gets , gets是从标准输入获取一行数据 , lines = readlines 一次获取多行内容直到EOF(ctrl+D)
puts a ,puts是打印输出到标准输出
文件输入输出:
File类打开文件,可以是纯文本和二进制文件
File.open("text.txt").each{|line| puts line},File.open接受代码块,当代码块运行结束,文件自动关闭
也可以File.new("text.txt","r").each{|line| puts line},File.new返回文件对象,关闭文件就必须用File.close
class MyFile
attr_reader :handle
def initialize(filename)
@handle = File.new(filename,"r")
end
def finished
@handle.close
end
end
f = MyFile.new("D://rb//text.txt")
puts f.handle.each{|txt| puts txt}
f.finished
其中each的默认界定符是"\n",自定义用each(",")自定义为","界定
用each_byte方法,逐字节地读取I/O流。用chr方法转化为字符~
另外用gets方法读取
def self.readf
File.open("D://rb//text.txt") do |f|
10.times{ puts f.gets}
end
end
同时也可以接受界定符 f.gets(',') 而f.getc是each_byte的非迭代版本
整行读取
def self.readl
puts File.open("D://rb//text.txt").readlines.join("--")
end
read方法读取任意字节数
def self.readb
File.open("D://rb//text.txt") do |f|
puts f.read(6)
end
end
简便方法推荐~
File.read(filename)和File.readlines(filename)
输入:
File.open("text.txt","w") do |f|
f.puts("this is a test")
end
File.new文件模式
文件模式 | 操作 |
r | 只读,文件指针开头 |
r+ | 可读可写,文件指针开头,复写 |
w | 写,复写 |
w+ | 可读可写,创建新文件 |
a | 写(附加模式) |
a+ | 可读可写(附加模式)文件指针末尾 |
gets-->puts
getc-->putc
read-->write
改名:File.rename("file1","file2")
删除:File.delete("file1","file2".....)
比较相同:File.identical?("file1","file2")
组织文件路劲:File.join('full','path','here','filename.txt')
上次修改文件的时间:File.mtime("file1")
文件是否存在:File.exist("file1")
文件大小:File.size("file1")
文件末尾:f.eof
文件智镇江定位:seek方法
seek三种模式
IO::SEEK_CUR | 从当前位置向前移动N个字节 |
IO::SEEK_END | 移动到文件末尾一定位置的地方。这表示从末尾开始搜索,可能使用负数 |
IO::SEEK_SET | 移动到文件的绝对位置。与pos=完全相同 |
def self.filepoint
f = File.new("D://rb//text.txt","r+")
f.seek(-5,IO::SEEK_END)
f.putc "X"
f.close
end
目录处理:(File::SEPARATOR是斜杠)
显示当前目录:Dir.pwd
移动当前目录:Dir.chdir("/usr/bin")
获得目录文件列表:Dir.entries("/usr/bin").join(' '),返回一个数组。Dir.foreach同理。Dir["/usr/bin/*"]
创建目录:Dir.mkdir("dir")
删除目录:Dir.delete("dir")