更新: 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  从末尾开始
   
   
   
   
   
   

Ruby IO类的更多相关文章

  1. C++的那些事:流与IO类

    1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...

  2. 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法

    装饰者模式(Decorator Pattern) Java的IO类 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716 ...

  3. JavaSE(一) IO类层次关系和各种IO流的用法总结

    今天把IO流的这一知点进行一下总结,因为在之前使用io流的时候,就只知道几个重点常用的IO类,比如FileInputStream,BufferedInputStream(缓冲流)等等,但是不知道它处于 ...

  4. C++IO类&文件输入输出

    C++IO类&文件输入输出 istream(输入流)类型,提供输入操作. ostream(输出流)类型,提供输出操作. cin,一个istream对象,从标准输入读取数据. cout,一个os ...

  5. C++ Primer 笔记——IO类

    1.C++语言并未定义任何输入输出语句,取而代之,包含了一个全面的标准库来提供IO机制. 由上图能够知道,I/O操作的基类是ios_base,各个类的用途例如以下: <iostream> ...

  6. 8 . IO类-标准IO、文件IO、stringIO

    8.1 IO类 #include <iostream> //标准IO头文件  8.2 文件输入输出流 #include <fstream> //读写文件头文件 std::fst ...

  7. IO库----IO类,文件输入输出,string流

    一.IO类 1.IO库类型和头文件表: 头文件 类型 iostream istream,wistream 从流读取数据 ostream,wostream 向流写入数据 iostream,wiostre ...

  8. IO相关1(io类/流状态)

    IO类: iostream 定义了用于读写流的基本类型,fstream 定义了读写命名文件的类型,sstream 定义了读写内存 string 对象的类型. IO 库类型和头文件: 头文件 类型 io ...

  9. Java IO 类一览表

    下表列出了大多数(非全部)按输/输出,基于字节或字符划分的 Java IO 类.

随机推荐

  1. Perforce share workspace between linux and windows

    p4 workspace 跨平台共享 (linux 和 window 共享) 用来存放代码的目录: linux存放代码目录: /home/username/ windows 上map network ...

  2. iOS 如何查看崩溃日志

    参考网址: [转载]https://www.jianshu.com/p/4de55d73c82b [转载]https://blog.csdn.net/qq_26544491/article/detai ...

  3. POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】

    题意: 有n种钱币,m个钱币兑换点,小明一开始有第n种钱币数量为w. 每个兑换点可以将两种不同的钱币相互兑换,但是兑换前要先收取一定的费用,然后按照比例兑换. 问小明是否可以经过一系列的兑换之后能够将 ...

  4. ATcoder 2000 Leftmost Ball

    Problem Statement Snuke loves colorful balls. He has a total of N×K balls, K in each of his favorite ...

  5. INFO org.apache.hadoop.ipc.RPC: Server at master/192.168.200.128:9000 not available yet, Zzzzz...

    hadoop 启动时namenode和datanode可以启动,使用jps命令也可以看到进程,但是在浏览器中输入master:50070却没有显示datanode 查看datanode的log日志: ...

  6. Mac BOOK PRO U盘安装windows7、8及8.1

    http://v.youku.com/v_show/id_XMTI1NjgzMzU0NA==.html http://jingyan.baidu.com/article/1709ad80b3d2f44 ...

  7. datasnap使用ipv6

    有些人说DATASNAP不支持IPv6,只支持IPv4. 这是不正确的. DATASNAP默认是使用IPv4在ipv6 环境下 怎样用datasnap?Params.Values['Communica ...

  8. centos6.5 (linux) 禁用模块 IPV6模块的方法

    装完centos后,默认开启了一些模块.可是有些模块并非我们必须的.比方眼下尚未在中国普及的IPV6 怎样关闭IPV6呢 以下介绍的方法,也能够在关闭其它模块的时候使用 第一步: 查找模块名称 使用命 ...

  9. PHP 画图——使用jpgraph画图

     1.要支持中文须要用到simhei.ttf和simsun.ttc这两个字体,在使用中文的时候须要使用SetFont(FF_SIMSUN,FS_BOLD)设置字体. 将须要的字体放入到项目文件夹下 ...

  10. java实用技能 上传文件 等等

    1.IOS  AES对称加密,加密结果不同,问题解决 IOS http post请求,使用AFNetworing 框架,默认请求content-type为application/json ,所以无法使 ...