`
酷的飞上天空
  • 浏览: 522515 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

ruby学习之IO(一)

阅读更多

 文件与目录的操作

ruby中文件和目录的操作基本上是基于File和Dir类的操作

创建一个File类的实例方式为

file = File.new("d:/text.txt") 
file = File.open("d:/text.txt","w")

 

File常用的实例方法有:

atime :返回文件的最后访问时间,一个Time对象

stat : 返回文件的状态信息对象,为FIle::Stat的实例,通过这个对象可以获得文件的创建修改时间以及大小等信息

mtime:返回文件的最后修改时间

path:返回文件的完整路径

each(separator="\n"){|line| block} :以separator参数分割读取文件,缺省按照行来分割,每次将文件的一行内容传入代码块执行

each_byte{|byte| block}:对文件的每个字节进行迭代执行

each_line{|line| block}:对文件的每行进行迭代执行

eof :如果读取到文件的末尾则返回true,否则返回false

gets :读取并返回文件的下一行

puts(obj)/print(ojb)/write(string) :写入内容至文件

lineno/lineno=:返回或设这当前的行号

pos/pos=:返回或设置当前读取的字节偏移量

File常用的类方法有

delete(filename) :删除文件

directory?(path) :是否是目录

exist?(filename) :文件后目录是否存在

expand_path(filename) :转换为绝对路径

file?(filename):是否为普通文件

rename(oldname,newname):重命名

size(filename):返回给定文件的字节大小

使用例子:

file_path = "d:/text.txt"
if File.exist?(file_path)
  puts "文件已找到!"
  file = File.new(file_path, "r")
  puts "源文件大小为:#{File.size(file_path)},创建时间为:#{file.ctime},最后访问时间为:#{file.atime}"
else
  puts "文件不存在,创建新文件#{file_path}"
end
puts "写入文件内容..."


File.open(file_path, "a+") do |file|
  #写入当前的时间
  file.puts "新的一行"+Time.now.strftime("%Y-%m-%d %H:%M:%S")
end

puts "输出文件内容====="
File.open(file_path, "r")do |file|
  #对每行进行迭代操作
  file.each_line do |line|
    puts "行号"+file.lineno.to_s+":"+line
  end
end

 

Dir类常用的类方法如下

chdir(filename):改变进程当前的工作目录,参数可以为使用相对路径

getwd/pwd :返回当前的工作目录

delete(dirname)/rmdir(dirname):删除给定的目录,如果目录不为空则引发异常

entries(dirname):返回给定目录中所有文件名组成的数组

foreach(dirname):对给定目录中的每一项进行迭代

mkdir(dirname):创建目录

glod(glod_pattern):使用模式glod_pattern在当前目录中查找匹配的子目录或文件,以数组的形式返回 Dir的方法[]等于调用glod例如Dir.glod("*.rb") 和Dir["*.rb"] 为返回所有后缀是rb的文件

 

例子:

dirpath = "d:/test"
testdirpath = "d:/test/testdir"
Dir.delete(testdirpath) if File.exist?(testdirpath)
puts "建立目录#{testdirpath}"
#建立目录
Dir.mkdir(testdirpath)

#更改工作目录为dirpath表示的目录,如果路径中含有中文字符,则会报找不到目录的错误
Dir.chdir(dirpath) do |path|
  puts "当前目录为#{Dir.pwd},下面的文件和目录为:"
  #输出目录下的子文件和子目录,如含有中文则以乱码显示(中文显示为方块)
  Dir["**/**"].each { |item| puts item }
end

puts "当前目录为:#{Dir.pwd},下面的文件和目录为:"
#使用Dir的foreach方法
Dir.foreach(Dir.pwd) do |dir|
  puts dir
end

=begin
输出如下:
建立目录d:/test/testdir
当前目录为d:/test,下面的文件和目录为:
test.txt
test.xml
testdir
当前目录为:D:/myruby/study/RubyStudy/lib,下面的文件和目录为:
.
..
main.rb
=end

 

操作xml   

简单xml操作,生成xml片段

require "rexml/document"
doc = REXML::Document.new
root_element = doc.add_element("persons",{"nameType"=>"String","ageType"=>"int"})
element1 = root_element.add_element("person",{"name"=>"张三","age"=>20})
element2 = root_element.add_element("person",{"name"=>"李四","age"=>22})
element1.add_text "家住在火星"
element2.add_text "家住在水星"

#puts root_element.to_s
#写入到文件
File.open("d:/test/rubytest.xml", "w+") { |file| file.write(root_element.to_s)  }

#读取文件
rdoc = REXML::Document.new File.new("d:/test/rubytest.xml")

rdoc.root.each_element do |e|
  puts e.attributes["name"]
  puts e.attributes["age"]
  puts e.text
end

 

输出:

张三
20
家住在火星
李四
22
家住在水星

 

 

分享到:
评论

相关推荐

    Ruby学习笔记

    中间的Io和prolog就被华丽丽的跳过了,因为prolog语法太奇葩,Io有没什么好的资料可以看,尽管我觉的Io应该会是一个强大的工具,而且语法超级简单。对象模型比起JavaScript好的不是一点两点,clone关键字真是为原型...

    Ruby 教程 The Book of Ruby

    《The Book of Ruby》作为一本经典的Ruby教程,为读者提供了一个系统的学习路径,从基础知识到高级应用,再到实战案例,都做了详尽的介绍。对于想要学习Ruby或进一步提升Ruby技能的开发者来说,这是一本不可多得的...

    学习 Ruby 的笔记以及 Demo.zip

    在学习过程中,你将接触到控制结构(如if语句、循环)、类和对象的创建、模块的使用、异常处理、文件和IO操作等基础内容,也会了解到如何使用Gem(Ruby的包管理器)安装和管理外部库,以及如何调试和测试Ruby代码。...

    Windows下RDT+Eclipse搭建 ruby开发环境配置

    在Windows环境下,搭建Ruby开发环境是一项基础而重要的工作,它涉及到多个步骤,包括安装必要的软件、配置环境变量以及集成开发工具的设置。本教程将详细讲解如何使用RDT(Ruby Development Tools)与Eclipse来创建...

    ruby介绍及相应的ruby demo示意源码,供大家参考学习

    Ruby是一种面向对象的、动态类型的...通过这些示例,我们可以深入理解Ruby语言的特性和常用操作,为今后的学习和开发打下坚实的基础。无论是初学者还是经验丰富的开发者,Ruby都能提供一个富有创新和乐趣的编程环境。

    ruby在unbuntu的安装版本

    Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发,如使用Rails框架。...通过以上步骤,你不仅了解了如何在Ubuntu上安装Ruby,还学习了RVM的基本用法,这将有助于你在未来的开发工作中灵活管理Ruby版本。

    ruby 语言学习

    Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。它强调代码的简洁性和可读性,致力于提供一种更人性化的工作环境,使得程序员能够更加高效地编写程序。Ruby...

    ruby-1.8.7-p72-i386-mswin32.zip

    总的来说,"ruby-1.8.7-p72-i386-mswin32.zip"是一个完整的Ruby发行版,包含了运行、学习和开发Ruby应用程序所需的所有组件。通过解压并按照README.1st中的指示进行安装,用户可以在32位的Windows系统上开始使用Ruby...

    ruby实用函数和实例

    Ruby是一种强大的、面向对象的脚本编程语言,以其简洁、优雅的语法和强大的功能而闻名。在Ruby中,有许多实用的内置函数和方法,这些...通过学习和实践,我们可以利用Ruby的这些工具来提升我们的开发效率和代码质量。

    ruby基础教程中文第四版

    《Ruby基础教程(中文第四版)》是深入学习Ruby语言的重要参考资料,由Ruby之父亲自审校并作序推荐,其权威性和准确性不言而喻。 该书涵盖了Ruby的基础知识,包括但不限于以下内容: 1. **变量和常量**:Ruby中的...

    ruby小程序

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法著称。在IT行业中,Ruby常用于...如果需要深入学习或开发Ruby小程序,建议阅读官方文档、参考书籍或者参加在线教程,以便系统地掌握Ruby语言及其应用。

    ruby中文文档

    5. **GIL(全局解释器锁)**:虽然Ruby的多线程模型受到全局解释器锁的限制,意味着在单个CPU核心上,同一时刻只能有一个线程执行Ruby代码,但仍然可以在IO密集型任务中利用多核资源。 6. **标准库和Gem**:Ruby的...

    Ruby编程,实用程序员指南Programming Ruby, The Pragmatic Programmer's Guide

    《Ruby编程,实用程序员指南》是一本针对Ruby语言的学习教程与参考手册,旨在为程序员提供一个全面、深入的Ruby语言学习资源。本书不仅适合初学者快速入门,也适合具有一定经验的开发者进阶学习。 ### 一、Ruby语言...

    ruby初学者教程(对初学者很有帮助)

    irb是一个命令行工具,可以让开发者直接在命令行中测试Ruby代码片段,非常适合学习和调试。 **2.4 使用ri(Ruby信息) ri是一个内置的帮助系统,可以帮助开发者查询Ruby文档和API。 **2.5 RubyGems** RubyGems是...

    ruby中文教程,pdf格式,含.rb源代码

    10. **测试驱动开发(TDD)**:在Ruby中,测试是非常重要的一部分,学习如何使用Rspec或Test::Unit进行单元测试和集成测试。 在教程中,每章的末尾可能还会包含练习题和实战项目,以帮助读者巩固所学知识,并实际动手...

    Ruby语言中文教程

    本教程旨在为中文学习者提供一个详细且易懂的Ruby语言学习资源,帮助大家快速掌握这一强大的开发工具。 首先,Ruby语言的核心特性是它的面向对象特性。在Ruby中,一切都是对象,包括基本数据类型如整数、字符串和...

    ruby hacking guide 中文版教程

    3. **块、迭代器与闭包**:Ruby中的块、迭代器和闭包是其强大的特性之一,它们在处理集合和控制流时尤其有用。书中会深入探讨这些概念,包括Proc和Lambda的区别,以及如何通过yield关键字使用块。 4. **元编程**:...

    Ruby语言入门教程(附源码文件)

    Ruby提供了方便的文件操作接口,如`File`类和`IO`类。可以进行文件的读写、追加、复制、删除等操作。 10. **Ruby on Rails框架** Ruby on Rails是基于Ruby的Web开发框架,遵循MVC(模型-视图-控制器)架构模式,...

    Ruby语言教程大纲.zip

    - Ruby的强大之处在于其元编程能力,可以在运行时动态修改类和对象的结构和行为。 - `send` 方法可以调用对象的任何方法,`class_eval` 和 `instance_eval` 可以在运行时定义或修改类和实例的行为。 6. **Gem和...

    ruby语言入门教程

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本"Ruby语言入门教程"是针对初学者精心设计的,旨在帮助新接触编程或者想学习Ruby语言的读者快速上手。 1. **Ruby的...

Global site tag (gtag.js) - Google Analytics