檔案與目錄的操作
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指令碼的,單行注釋可以使用 從 開始到 結束。在上面...