`
酷的飞上天空
  • 浏览: 517945 次
  • 性别: 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关键字真是为原型...

    book-of-ruby:来自《Ruby 之书》一书的源代码

    这是《Ruby 之书》一书中的源代码。 第 1 章:字符串、数字、类和对象 第 2 章:类层次结构、属性和类变量 第 3 章:字符串和范围 第 4 章:数组和哈希 第 5 章:循环和迭代器 第 6 章:条件语句 第 7 章:方法 第 ...

    Ruby版本管理工具RVM的安装和使用教程

    如果你打算学习 Ruby / Rails, RVM 是必不可少的工具之一。 这里所有的命令都是再用户权限下操作的,任何命令最好都不要用 sudo. RVM 安装 $ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/....

    rubyschool.io:Ruby School网站,正在运行,但还有很多工作要做

    rubyschool.github.io 在网络上: : 是的,一开始它会像是的分支。 但是NodeJS社区做得很好,我们需要向他们学习一些东西。 基本思想-具有与他们相同的活动类型,与Ruby和宝石一样,建立。 请分叉并将其发送给我们...

    Ruby的安装与运行

    版本控制系统:rvm(rvm.io)、rbenv rvm 查看ruby版本 rvm list known 安装 rvm install 2.2.1 帮助 rvm --help 用户手册 : man rvm rbenv OSX下用brew安装 windows下安装通过rubyInstaller 学习资料 ...

    dinner-dash-rails:使用Ruby on Rails创建一个电子商务应用程序。 这是一个D0模拟应用程序项目

    介绍学习目标使用TDD来驱动Rails开发的所有层,包括单元,集成和用户验收测试设计一个使用一对一,一对多和多对多关系的模型系统练习混合HTML,CSS和Rails模板以创建邀请和可用的用户界面区分Rails堆栈中各个组件的...

    toucan:一个Ruby框架,可制作小型但令人赞叹的CLI应用程序。 (工作正在进行中)

    下一步最常见的方法之一就是研究解决方案,但这听起来常常像是用大炮杀死一只蚂蚁,而且这并非没有小的(但存在的)学习曲线。 还有其他十二个含义。 就个人而言,我发现同步IO是常见CLI的最讨厌的限制。 如果在...

    demonlife.github.io:学习笔记-博客

    一系列 rake 任务简化了开发并使部署变得轻而易举。 附带了一些来自 Jekyll 社区的原始插件和其他插件——经过测试和改进。 注意:Octopress 需要最低 Ruby 版本1.9.3-p0 。 文档 查看以获取指南和文档。 它应该...

    七周七语言

    内容简介:, 从计算机...了解多门语言蕴涵的思维方式,在编码中互相借鉴,再挑出一两门对自己口味的语言深入学习,这些已经成为在软件行业中安身立命之本。从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    orlandodevs.github.io:Orlando Devs网站和博客

    orlandodevs.github.io 奥兰多开发公司的网站和博客: : 入门 该项目使用jekyll ,这意味着您将需要安装ruby开发环境。 在.ruby-version或Gemfile查看所需的Ruby.ruby-version 。 您可以运行ensure_env_...

    teaxwin.github.io

    hello是一个极简主义的模板,可让您在GitHub Pages上设计漂亮的网站或产品组合-无需安装Ruby开发环境,学习使用Jekyll或什至无需输入一行代码。 对于想要在上开始建立自己的个人网站但对Web开发不太熟悉的...

    七周七语言 mobi

    内容简介: 从计算机...了解多门语言蕴涵的思维方式,在编码中互相借鉴,再挑出一两门对自己口味的语言深入学习,这些已经成为在软件行业中安身立命之本。从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    七周七语言:理解多种编程范型.pdf

    内容简介: ...了解多门语言蕴涵的思维方式,在编码中互相借鉴,再挑出一两门对自己口味的语言深入学习,这些已经成为在软件行业中安身立命之本。从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    RoR_julia_eg:通过 ZMQ 使用 Julia 链接的 Ruby on Rails Web 应用程序示例

    此示例展示了一种通过 ZMQ 将 Ruby on Rails Web 应用程序与 Julia 连接的方法。 在此之前,我没有使用 ZMQ、Ruby、Rails、html 或 JavaScript 的经验,只有基本的 Julia 知识。 我只是在学习,我希望这篇文章对你...

    jas0nmjames.github.io:用Jekyll用HTML,CSS和Markdown编写的个人和投资组合网站。 从头开始(不带模板)学习以进行理解。 在学习JAMstack的旅程中。 下一站,在Framer中进行设计并在React中进行构建

    自己动手做是获得理解和掌握的最好方法之一 依赖关系是痛苦的重担,尤其是随着时间的流逝。 开源项目正在授权,鼓舞人心且混乱不堪。 信息架构很有趣。 设计系统很有趣。 尽管这个项目在技术上并不合算,但是...

    minchao920917.github.io:个人博客

    听说用github.io可以建造自己的博客,后来发现很多坑,,首先需要自己学习jekyll的相关知识,html + css + js基础不说,还要学markdown,这还不算坑,最坑的是要学jekyll语法还有Ruby的相关东西以及gems的东西,幸好...

    ichinoe.github.io:域页面

    关于IO 根本解释 该项目中使用的技术很简单,没有值得学习的东西。 如果您对它的效果感到好奇,请不要浪费时间。 ... 我正打算上传我的一些关于Ruby学习的笔记。 但是在此之前,我必须先谈谈HTML。

    examples:sylabs.io博客中用于创建和使用示例容器的文件和说明

    例子 在此处,您可以从找到有关创建和使用示例容器的文件和说明。 ...机器学习 咖啡 侦探 过氧化氢 霍罗沃德 英特尔-Tensorflow Jupyter笔记本 橙色数据挖掘 火花 威卡 消息代理 兔子MQ 包装 FPM

    mogdash:MogileFS 的 dashing.io 小部件

    这是我的第一个小部件,我仍在学习 Ruby、咖啡脚本。 所以要小心。 它有点笨拙,但它有效,而且看起来很酷。 这是如何做到的。 将 jobs/trackers.rb 文件复制到您的作业文件夹将 widgets/mogile 文件夹复制到您的 ...

    trail-map, 帮助设计师和开发人员学习各种主题的轨迹.zip

    trail-map, 帮助设计师和开发人员学习各种主题的轨迹 轨迹图如何学习 Ruby on Rails? Vim测试驱动开发?我们的apprentice.io 强迫我们形式化对这些问题的回答。一些问题使这些问题难以回答。 个人:具有不同的体验...

Global site tag (gtag.js) - Google Analytics