文明之精神,野蛮之体魄。
全部博文(64)
分类: Python/Ruby
2013-05-09 10:28:18
一、 基本输入输出
1. 基本输出:Kernel模块下包含的基本输出方法有p,print,printf,putc,puts。。。
puts:任何语言都不能输出一个对象,对象时内存里存在的内容。当我们使用puts输出一个对象时,实际上输出的是这个对象的to_s方法返回的值。
putc:只能输出一个字符,可以将一个整数转化为一个字符然后输出。
P:p方法与puts方法的用法基本相似,也可以用于输出一个或多个对象,但区别是p方法输出的不是对象的to_s方法返回值,而是对象的inspect方法返回值。
print:一样可以输出多个对象,输出对象时也是输出该对象的to_s方法返回值。可以指定域分隔符($,)来指定输出的多个对象之间的分隔符。。也可以指定行分隔符($\)来指定print方法每次输出完成后自动添加的输出。
2. 基本输入:............................getc,gets ,open,readline,readlines….getc已被废弃。。。
gets:既可以读取键盘输入,也可以读取文件输入。。当使用gets来读取文件内容时,我们需要指定所读取的文件名字,指定读取文件名需要使用ARGV常量或$*常量。这两常量作用相同,他们都是一个数组,可以接受多个文件名。
readline:和gets方法基本相似,只有一个小小的区别:对于gets方法而言,如果读取文件到了文件尾时,返回一个nil值。而readline遇到文件尾时则引发一个EOFError异常。
radlines:可以一次性地把指定文件中的所有行读到一个字符串数组里,每个数组元素对于被读文件的一行。。。。
二、 IO类简介
三、 文件访问
1. 调用系统命令:
File类提供三个访问文件时间的方法。
atime:获取文件的访问时间。ctime:获取文件的创建时间。mtime:获取文件的修改时间。
2. 打开或关闭文件:当文件访问结束后,一定要关闭文件。关闭文件可以保证缓冲区的数据被写入物理文件,还可以让Ruby释放相关底层物理资源。。。。Ruby还提供了一个open方法来打开文件,它比使用new方法来打开一个文件更方便。使用open方法与使用new方法的语法基本相同,区别在于使用open方法可以传入一个代码块,这个代码块就是我们需要对文件所做的操作。
3. 读文件:read([length[,buffer]])=>string,buffer,or nil:从File实例中读取最多length个字节的内容。如果在上面的方法中使用buffer参数,则该参数应该指向一个字符串,这个字符串用于保存读到的内容。
ios.readchar=>fixnum:该方法从File实例中读取一个字符,并将该字符转换成对于的fixnum后返回。
ios.readline(sep_string=$/)=>string:该方法从指定文件中读取一行,到文件尾时会引发一个EOFError异常。
ios.gets(sep_string=$/)=>string or nil:该方法与readline方法基本相似,但不会引起EOFError异常,而是返回一个nil。
ios.readlines(sep_string=$/)=>array:该方法一次读取指定文件的所有行,并把所有行的内容保存在字符串数组里。
File类里也提供了如下几个方法来直接操作文件指针的位置:
pos:返回文件指针的位置。
pos=:将文件指针移动到指定的位置。
rewind:将文件指针移动到文件开始位置。
我们使用gets一次读取文件内容时,每调用一次gets方法,文件指针下移一行。
lineno:返回当前文件指针的所在的行。
lineno=:直接将文件指针移动到指定行。
4. 使用迭代读文件:
File实例包含如下三个迭代器。
each_byte:按字节迭代,当调用迭代器时,依次将文件里的每个字节传入代码块。
each_line:按行迭代。
each:按行迭代。
5. 写文件
File类提供了如下几个方法来实现写文件。
print:将一行字符串或多行字符串写入一个文件,默认输出一行后不换行,可以通过设置“$\”来让每次print输出之后增加换行。
putc:将一个字符写入一个文件。
puts:将一行字符串或多行字符串写入一个文件,每次输出一行后自动换行。
write:将一行字符串写入一个文件。