Ruby IO类

更新: 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+"  读写
 opt  
   
   
 关闭文件  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  从末尾开始
   
   
   
   
   
   

 

posted @ 2017-05-21 10:12  懒虫哥哥  阅读(544)  评论(0编辑  收藏  举报