现在的位置: 首页 > 综合 > 正文

ruby学习之文件和数据库(一)

2013年05月16日 ⁄ 综合 ⁄ 共 1710字 ⁄ 字号 评论关闭

输入输出:

标准输入:

a = gets , gets是从标准输入获取一行数据 , lines = readlines 一次获取多行内容直到EOF(ctrl+D)

puts a ,puts是打印输出到标准输出

 

文件输入输出:

File类打开文件,可以是纯文本和二进制文件

File.open("text.txt").each{|line| puts line},File.open接受代码块,当代码块运行结束,文件自动关闭

也可以File.new("text.txt","r").each{|line| puts line},File.new返回文件对象,关闭文件就必须用File.close

class MyFile
  attr_reader :handle
  def initialize(filename)
    @handle = File.new(filename,"r")
  end
  
  def finished
    @handle.close
  end
  
end

f = MyFile.new("D://rb//text.txt")
puts f.handle.each{|txt| puts txt}
f.finished

其中each的默认界定符是"\n",自定义用each(",")自定义为","界定

用each_byte方法,逐字节地读取I/O流。用chr方法转化为字符~

 

另外用gets方法读取

  def self.readf
    File.open("D://rb//text.txt") do |f|
      10.times{ puts f.gets}
    end
  end

同时也可以接受界定符 f.gets(',')  而f.getc是each_byte的非迭代版本

 

整行读取

  def self.readl
    puts File.open("D://rb//text.txt").readlines.join("--")
  end

read方法读取任意字节数

  def self.readb
    File.open("D://rb//text.txt") do |f|
      puts f.read(6)
    end
  end

简便方法推荐~

File.read(filename)和File.readlines(filename)

 

输入:

File.open("text.txt","w") do |f|
f.puts("this is a test")
end

File.new文件模式

文件模式 操作
r 只读,文件指针开头
r+ 可读可写,文件指针开头,复写
w 写,复写
w+ 可读可写,创建新文件
a (附加模式)
a+ 可读可写(附加模式)文件指针末尾

gets-->puts

getc-->putc

read-->write

改名:File.rename("file1","file2")

删除:File.delete("file1","file2".....)

比较相同:File.identical?("file1","file2")

组织文件路劲:File.join('full','path','here','filename.txt')

上次修改文件的时间:File.mtime("file1")

文件是否存在:File.exist("file1")

文件大小:File.size("file1")

文件末尾:f.eof

文件智镇江定位:seek方法
seek三种模式

   
IO::SEEK_CUR 从当前位置向前移动N个字节

IO::SEEK_END

移动到文件末尾一定位置的地方。这表示从末尾开始搜索,可能使用负数
IO::SEEK_SET 移动到文件的绝对位置。与pos=完全相同
  def self.filepoint
    f = File.new("D://rb//text.txt","r+")
    f.seek(-5,IO::SEEK_END)
    f.putc "X"
    f.close
  end

 

目录处理:(File::SEPARATOR是斜杠)

显示当前目录:Dir.pwd

移动当前目录:Dir.chdir("/usr/bin")

获得目录文件列表:Dir.entries("/usr/bin").join('  '),返回一个数组。Dir.foreach同理。Dir["/usr/bin/*"]

创建目录:Dir.mkdir("dir")

删除目录:Dir.delete("dir")

 

抱歉!评论已关闭.