更新: 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. redis安装【三】

    目录介绍: 0.Windows下下载安装包: 下载地址: https://redis.io/ 1.上传到linux服务器 将文件上传到192.168.2.128主机的usr/local目录下: C:\ ...

  2. msp430项目编程01

    msp430中项目---点阵LED显示 1.点阵LED介绍 2.代码(直接使用引脚驱动) 3.代码(使用芯片驱动) 4.项目总结 msp430项目编程 msp430入门学习

  3. python学习之-- 面向对象

    面向对象(简写:OOP) 面向对象编程定义:利用类和对象来创建各种模型,来实现对真实世界的描述. 优点:使程序更容易理解和维护以及扩展代码. 类定义:用来描述具有相同的属性和方法的对象的集合.(简单讲 ...

  4. Construct Binary Tree from Preorder and Inorder Traversal (DFS,参考)

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  5. Java数组操作方法收集(快速判断某个值在这个数组中)

    Java数组操作最高效的方式是循环取值,如果转换成集合那么就会分配内存,效率不如前者,但是方法多,需要在性能调优上去权衡.切记:数组是数组,集合是集合. 下面是收集最常用的数组转成集合的操作方法: i ...

  6. java截屏简单例子

    原文:http://www.open-open.com/code/view/1444211411979 java截屏 * 运行后将当前屏幕截取,并最大化显示. * 拖拽鼠标,选择自己需要的部分. * ...

  7. 学习swift从青铜到王者之Swift控制语句04

    1 if语句基本用法 if boolean_expression { /* 如果布尔表达式为真将执行的语句 */ } 如果布尔表达式为 true,则 if 语句内的代码块将被执行.如果布尔表达式为 f ...

  8. hdu 4057 Rescue the Rabbit

    题意 给出n(n<=10)个串,每个串有个权值,然后让你构造一个长度为l(l<=100)的串,如果他包含给出的串就得到相应的权值,求可能得到的最大权值 解法 AC自动机+DP,很显然要建立 ...

  9. Android 自己定义UI文章汇总

    <Android ListView分类/分组效果 - 第一种实现方式> <Android ListView分类/分组效果 - 另外一种实现方式> <Android Lis ...

  10. 一个基于JBoss5.1+EJB3.0 登陆应用

    花了几天的时间研究了一下EJB的使用,一直以来都主要是在写终端中的程序,对Java框架的相关的开发非常不熟悉,中间遇到了不少麻烦,还好总算都攻克了.写篇日志记录一下. 经验总结 为什么选择JBoss5 ...