更新: 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. JS基本数据类型&流程控制

    JS基本数据类型 number     -----  数值 boolean    -----  布尔值 string     -----  字符串 [x,y] -------数组 undefined  ...

  2. poj 1236+hdu2767 有向图 缩点+看度数(tarjan)

    1236题意:一个有向图,1,求至少从几个点出发可以遍历该图,2:,求至少添加多少边,使强连通.而,HDU的只有后面一问. 解;先缩点,第一问只需找所有入度为0的点即可.,第2问,max(入度为0的点 ...

  3. django学习之- Form

    参考:http://www.cnblogs.com/wupeiqi/articles/6144178.htmlFORM中的字段只对post上来的数据进行form验证,主要涉及:字段 和 插件字段:对用 ...

  4. 2017icpc乌鲁木齐网络赛Colored Graph (构造)

    题目 https://nanti.jisuanke.com/t/16958 题意 给定一个n(n<=500)个点的无向图,给每条边黑白染色,输出同色三角形最少的个数和对应的方案 分析 首先考虑给 ...

  5. Spring MVC静态资源实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-static-pages-example.html: 例子 ...

  6. Windows下C/C++连接mysql数据库的方法

    步骤 安装MySQL数据库 项目属性页->C/C++->常规->附加包含目录:xxx\mysql Server 5.6\include 项目属性页->链接器->常规-&g ...

  7. 【深度探索c++对象模型】Function语义学之成员函数调用方式

    非静态成员函数 c++的设计准则之一就是:非静态成员函数至少和一般的非成员函数有相同的效率.编译器内部已将member函数实体转换为对等的nonmember函数实体. 转化步骤: 1.改写函数原型以安 ...

  8. 转: eclipse 快捷键列表(功能清晰版本)

    转自: http://www.uml.org.cn/mobiledev/201110092.asp Eclipse 在开发中使用到的快捷键很实用噢 Ctrl+1 快速修复(最经典的快捷键,就不用多说了 ...

  9. webx启动流程

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTFRpYW5jaGFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  10. 算法导论学习之线性时间求第k小元素+堆思想求前k大元素

    对于曾经,假设要我求第k小元素.或者是求前k大元素,我可能会将元素先排序,然后就直接求出来了,可是如今有了更好的思路. 一.线性时间内求第k小元素 这个算法又是一个基于分治思想的算法. 其详细的分治思 ...