更新: 2017/06/23 表格大小全部改为100%
文件输入输出的File....系列函数的文件名参数是字符串!
更新: 2017/06/24 补充io.write()
更新: 2019/04/18 补充File#read说明, 对readline, gets, readlines进行总结, 修改File#open的格式便于查看
| 内置变量 |
| 标准输入 |
STDIN
$stdin |
| 标准输出 |
STDOUT
$stdout |
| 标准异常输出 |
STDERR
$stderr |
| |
|
| |
|
|
| |
|
| 二进制模式 |
内容直接复制,无改动
不进行换行符号的跨系统转换 |
| |
|
| 方法 |
| 读取 |
|
| 是否和命令行连接 |
STDIN.tty?
$stdin.tty?
注: teletype
电报 |
| 读取1行 |
io.gets(rs=$/) 遇到EOF返回nil io.readline(rs=$/) 遇到EOF抛出错误
内置全局变量$/就是\n |
| 读取所有行 |
io.readlines(rs=$/) |
| 遍历所有行 |
io.each(rs=$/) io.each_line(rs=$/) |
| 检查是否读到了最后 |
io.eof?()
eof: end of file |
| 读取的行数 |
io.lineno
变更 io.lineno = ... |
| 读取每个字符 |
io.each_char {|...|
...} |
| 读取每一位 |
io.each_byte {|...| ...}
返回每一位的ASCII整数值 |
| 只读一个字符 |
io.getc() |
| 替换当前字符 |
io.ungetc("...") |
| 只读一位 |
io.getbyte() |
| 替换当前位 |
io.ungetbyte(byte)
byte:整数时候自动%6
字符串则只取第一个 |
| 读取指定位长度 |
io.read(size=all)
默认全部 |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| 输出 |
|
| 输出带换行的字符串 |
io.puts(s1, s2,...)
默认STDOUT.puts(.)
每一个参数都附加换行
不是字符的自动召唤to_s() |
| 输出字符 |
io.putc(ch)
不换行 |
| 输出字符串 |
io.print(s1, s2,..)
io.write()
不换行,相当于就那么输出 |
| 指定格式输出 |
io.printf(str, a1, a2,...)
注sprintf(...)返回成型的字符串 |
| |
|
| 插字符串 |
io << str1 <<
str2 << ... |
| |
|
| 搜索 |
|
| 当前指针 |
获取 io.pos
变更 io.pos = (num) |
| 变更位置 |
io.seek(offset, whence)
| IO::SEEK_SET |
绝对位置 |
| IO::SEEK_CUR |
相对位置 |
| IO::SEEK_END |
从末尾开始 |
|
| 回到开头 |
io.rewind() |
| 剪裁 |
io.truncate(size)
size:整数决定长度
指针则删除当前指针后的数据 |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| 切换模式 |
io.binmode() |
| 缓存区 |
只有任务结束才会更新 |
| 立刻更新 |
io.flush() |
| 设定同步 |
io.sync()
io.sync() = true |
| |
|
| |
|
| |
|
|
| |
|
| 子类 |
|
| File |
|
| 方法 |
| 打开文件 |
File.open (file,mode,perm, opt)
open(file,mode,perm, opt) # File可省
● 代码块式,结束自动关闭
File.open(...) do |file|
...
end
注:mode处可以指定内外编码
"r:utf-8:utf-8"
"r:ex:in"
内部编码可省略
先指定的是外部编码
| mode |
rt这样改行一律\n
rb,wb,ab二进制
默认r |
| "r" |
读 |
| "r+" |
读写
写是覆盖性的写 |
| "w" |
写(覆盖) |
| "w+" |
读写 |
| "a" |
写(新添加) |
| "a+" |
读写 |
|
| 关闭文件 |
file.close()
注:不能关空的,会报错 |
| 确认是否关闭 |
file.closed?() |
| 读取文件指定字数 |
File.read(file, length=0, offset=0)
● 返回读取的字符串
● 参数
| file |
文件名 |
| length |
读取的位数(byte) |
| offset |
跳过开头多少位 |
● File.binread(file, length=0,offset=0) 二进制模式
|
| 写入 |
File.write(file, data, offset = 0)
data: 字符串
File.binwrite(..)
二进制模式 |
| 插字符串 |
io << str1 << str2 <<
... |
| |
|
| |
|
| |
|
| 搜索 |
|
| 当前指针 |
获取 io.pos
变更 io.pos = (num) |
| 变更位置 |
io.seek(offset, whence)
| IO::SEEK_SET |
绝对位置 |
| IO::SEEK_CUR |
相对位置 |
| IO::SEEK_END |
从末尾开始 |
|
| |
|
| |
|
|
| |
|
| |
|
| |
|
| |
|