ruby學習之IO 一

2021-08-30 16:39:32 字數 3350 閱讀 7919

檔案與目錄的操作

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") :以separator引數分割讀取檔案,預設按照行來分割,每次將檔案的一行內容傳入**塊執行

each_byte:對檔案的每個位元組進行迭代執行

each_line:對檔案的每行進行迭代執行

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 "原始檔大小為:#,建立時間為:#,最後訪問時間為:#"

else

puts "檔案不存在,建立新檔案#"

endputs "寫入檔案內容..."

file.open(file_path, "a+") do |file|

#寫入當前的時間

file.puts "新的一行"+time.now.strftime("%y-%m-%d %h:%m:%s")

endputs "輸出檔案內容*****"

file.open(file_path, "r")do |file|

#對每行進行迭代操作

file.each_line do |line|

puts "行號"+file.lineno.to_s+":"+line

endend

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 "建立目錄#"

#建立目錄

dir.mkdir(testdirpath)

#更改工作目錄為dirpath表示的目錄,如果路徑中含有中文字元,則會報找不到目錄的錯誤

dir.chdir(dirpath) do |path|

puts "當前目錄為#,下面的檔案和目錄為:"

#輸出目錄下的子檔案和子目錄,如含有中文則以亂碼顯示(中文顯示為方塊)

dir["**/**"].each

endputs "當前目錄為:#,下面的檔案和目錄為:"

#使用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",)

element1 = root_element.add_element("person",)

element2 = root_element.add_element("person",)

element1.add_text "家住在火星"

element2.add_text "家住在水星"

#puts root_element.to_s

#寫入到檔案

file.open("d:/test/rubytest.xml", "w+")

#讀取檔案

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學習筆記之陣列學習(一)

陣列 方括號之之間放一組元素,索引從零開始。如果這個位置上沒有物件,則返回nil表示空。使用負整數訪問陣列,則從陣列末端開始計數。一 陣列定義 a 3.14159,pai 99 puts a.class puts a.length puts a 0 輸出 array 33.14159 b array...

ruby學習筆記之陣列學習(一)

陣列 方括號之之間放一組元素,索引從零開始。如果這個位置上沒有物件,則返回nil表示空。使用負整數訪問陣列,則從陣列末端開始計數。一 陣列定義 a 3.14159,pai 99 puts a.class puts a.length puts a 0 輸出 array 33.14159 b array...

Ruby基礎學習(一)

ruby算是我們平常自動化測試中常用的指令碼語言了,最近開始學習ruby,將這些學習的點滴記錄下來。1.輸出 最常用的是puts和print。很明顯puts是帶有回車的,而print不包括回車的。2.注釋 在ruby語言中,注釋是比較接近shell指令碼的,單行注釋可以使用 從 開始到 結束。在上面...