濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 在Ruby中處理文件的輸入和輸出的教程

在Ruby中處理文件的輸入和輸出的教程

熱門(mén)標(biāo)簽:征服者企業(yè)地圖標(biāo)注 漯河電銷(xiāo) 柯城手機(jī)地圖如何做地圖標(biāo)注 中牟外呼系統(tǒng)違法嗎 巫師3地圖標(biāo)注魔力之所 淮安自動(dòng)外呼系統(tǒng)供應(yīng)商 外呼線路從哪里出來(lái)的 AI電銷(xiāo)機(jī)器人 線路 天津外呼系統(tǒng)怎么收費(fèi)

Ruby 提供了一整套 I/O 相關(guān)的方法,在內(nèi)核(Kernel)模塊中實(shí)現(xiàn)。所有的 I/O 方法派生自 IO 類(lèi)。

類(lèi) IO 提供了所有基礎(chǔ)的方法,比如 read、 write、 gets、 puts、 readline、 getc 和 printf。

本章節(jié)將講解所有 Ruby 中可用的基礎(chǔ)的 I/O 函數(shù)。如需了解更多的函數(shù),請(qǐng)查看 Ruby 的 IO 類(lèi)。
puts 語(yǔ)句

在前面的章節(jié)中,您賦值給變量,然后使用 puts 語(yǔ)句打印輸出。

puts 語(yǔ)句指示程序顯示存儲(chǔ)在變量中的值。這將在每行末尾添加一個(gè)新行。
實(shí)例

#!/usr/bin/ruby
 
val1 = "This is variable one"
val2 = "This is variable two"
puts val1
puts val2

這將產(chǎn)生以下結(jié)果:

This is variable one
This is variable two

gets 語(yǔ)句

gets 語(yǔ)句可用于獲取來(lái)自名為 STDIN 的標(biāo)準(zhǔn)屏幕的用戶輸入。
實(shí)例

下面的代碼演示了如何使用 gets 語(yǔ)句。該代碼將提示用戶輸入一個(gè)值,該值將被存儲(chǔ)在變量 val 中,最后會(huì)被打印在 STDOUT 上。

#!/usr/bin/ruby
 
puts "Enter a value :"
val = gets
puts val

這將產(chǎn)生以下結(jié)果:

Enter a value :
This is entered value
This is entered value

putc 語(yǔ)句

與 puts 語(yǔ)句不同,puts 語(yǔ)句輸出整個(gè)字符串到屏幕上,而 putc 語(yǔ)句可用于依次輸出一個(gè)字符。
實(shí)例

下面代碼的輸出只是字符 H:

#!/usr/bin/ruby
 
str="Hello Ruby!"
putc str

這將產(chǎn)生以下結(jié)果:

H

print 語(yǔ)句

print 語(yǔ)句與 puts 語(yǔ)句類(lèi)似。唯一的不同在于 puts 語(yǔ)句在輸出內(nèi)容后會(huì)跳到下一行,而使用 print 語(yǔ)句時(shí),光標(biāo)定位在同一行。
實(shí)例

#!/usr/bin/ruby
 
print "Hello World"
print "Good Morning"

這將產(chǎn)生以下結(jié)果:

Hello WorldGood Morning

打開(kāi)和關(guān)閉文件

截至現(xiàn)在,您已經(jīng)讀取并寫(xiě)入標(biāo)準(zhǔn)輸入和輸出?,F(xiàn)在,我們將看看如何操作實(shí)際的數(shù)據(jù)文件。
File.new 方法

您可以使用 File.new 方法創(chuàng)建一個(gè) File 對(duì)象用于讀取、寫(xiě)入或者讀寫(xiě),讀寫(xiě)權(quán)限取決于 mode 字符串。最后,您可以使用 File.close 方法來(lái)關(guān)閉該文件。
語(yǔ)法

aFile = File.new("filename", "mode")
  # ... 處理文件
aFile.close

File.open 方法

您可以使用 File.open 方法創(chuàng)建一個(gè)新的 file 對(duì)象,并把該 file 對(duì)象賦值給文件。但是,F(xiàn)ile.open 和 File.new 方法之間有一點(diǎn)不同。不同點(diǎn)是 File.open 方法可與塊關(guān)聯(lián),而 File.new 方法不能。

File.open("filename", "mode") do |aFile|
  # ... process the file
end

下表列出了打開(kāi)文件的不同模式:

文件查詢

下面的命令在打開(kāi)文件前檢查文件是否已存在:

#!/usr/bin/ruby
 
File.open("file.rb") if File::exists?( "file.rb" )

下面的命令查詢文件是否確實(shí)是一個(gè)文件:

#!/usr/bin/ruby
 
# 返回 i>true/i> 或 i>false/i>
File.file?( "text.txt" )

下面的命令檢查給定的文件名是否是一個(gè)目錄:

#!/usr/bin/ruby
 
# 一個(gè)目錄
File::directory?( "/usr/local/bin" ) # => true
 
# 一個(gè)文件
File::directory?( "file.rb" ) # => false

下面的命令檢查文件是否可讀、可寫(xiě)、可執(zhí)行:

#!/usr/bin/ruby
 
File.readable?( "test.txt" )  # => true
File.writable?( "test.txt" )  # => true
File.executable?( "test.txt" ) # => false

下面的命令檢查文件是否大小為零:

#!/usr/bin/ruby
 
File.zero?( "test.txt" )   # => true

下面的命令返回文件的大?。?br />

#!/usr/bin/ruby
 
File.size?( "text.txt" )   # => 1002

下面的命令用于檢查文件的類(lèi)型:

#!/usr/bin/ruby
 
File::ftype( "test.txt" )   # => file

ftype 方法通過(guò)返回下列中的某個(gè)值來(lái)標(biāo)識(shí)了文件的類(lèi)型:file、 directory、 characterSpecial、 blockSpecial、 fifo、 link、 socket 或 unknown。

下面的命令用于檢查文件被創(chuàng)建、修改或最后訪問(wèn)的時(shí)間:

#!/usr/bin/ruby
 
File::ctime( "test.txt" ) # => Fri May 09 10:06:37 -0700 2008
File::mtime( "text.txt" ) # => Fri May 09 10:44:44 -0700 2008
File::atime( "text.txt" ) # => Fri May 09 10:45:01 -0700 2008

Ruby 中的目錄

所有的文件都是包含在目錄中,Ruby 提供了處理文件和目錄的方式。File 類(lèi)用于處理文件,Dir 類(lèi)用于處理目錄。
瀏覽目錄

為了在 Ruby 程序中改變目錄,請(qǐng)使用 Dir.chdir。下面的實(shí)例改變當(dāng)前目錄為 /usr/bin。

Dir.chdir("/usr/bin")

您可以通過(guò) Dir.pwd 查看當(dāng)前目錄:
puts Dir.pwd # 返回當(dāng)前目錄,類(lèi)似 /usr/bin

您可以使用 Dir.entries 獲取指定目錄內(nèi)的文件和目錄列表:

puts Dir.entries("/usr/bin").join(' ')

Dir.entries 返回一個(gè)數(shù)組,包含指定目錄內(nèi)的所有項(xiàng)。Dir.foreach 提供了相同的功能:

Dir.foreach("/usr/bin") do |entry|
  puts entry
end

獲取目錄列表的一個(gè)更簡(jiǎn)潔的方式是通過(guò)使用 Dir 的類(lèi)數(shù)組的方法:

Dir["/usr/bin/*"]

創(chuàng)建目錄

Dir.mkdir 可用于創(chuàng)建目錄:

Dir.mkdir("mynewdir")

您也可以通過(guò) mkdir 在新目錄(不是已存在的目錄)上設(shè)置權(quán)限:

注意:掩碼 755 設(shè)置所有者(owner)、所屬組(group)、每個(gè)人(world [anyone])的權(quán)限為 rwxr-xr-x,其中 r = read 讀取,w = write 寫(xiě)入,x = execute 執(zhí)行。

Dir.mkdir( "mynewdir", 755 )

刪除目錄

Dir.delete 可用于刪除目錄。Dir.unlink 和 Dir.rmdir 執(zhí)行同樣的功能,為我們提供了便利。

Dir.delete("testdir")

創(chuàng)建文件 臨時(shí)目錄

臨時(shí)文件是那些在程序執(zhí)行過(guò)程中被簡(jiǎn)單地創(chuàng)建,但不會(huì)永久性存儲(chǔ)的信息。

Dir.tmpdir 提供了當(dāng)前系統(tǒng)上臨時(shí)目錄的路徑,但是該方法默認(rèn)情況下是不可用的。為了讓 Dir.tmpdir 可用,使用必需的 'tmpdir' 是必要的。

您可以把 Dir.tmpdir 和 File.join 一起使用,來(lái)創(chuàng)建一個(gè)獨(dú)立于平臺(tái)的臨時(shí)文件:

require 'tmpdir'
  tempfilename = File.join(Dir.tmpdir, "tingtong")
  tempfile = File.new(tempfilename, "w")
  tempfile.puts "This is a temporary file"
  tempfile.close
  File.delete(tempfilename)

這段代碼創(chuàng)建了一個(gè)臨時(shí)文件,并向其中寫(xiě)入數(shù)據(jù),然后刪除文件。Ruby 的標(biāo)準(zhǔn)庫(kù)也包含了一個(gè)名為 Tempfile 的庫(kù),該庫(kù)可用于創(chuàng)建臨時(shí)文件:

require 'tempfile'
  f = Tempfile.new('tingtong')
  f.puts "Hello"
  puts f.path
  f.close

您可能感興趣的文章:
  • 簡(jiǎn)要說(shuō)明Ruby中的迭代器
  • 在Ruby中處理日期和時(shí)間的教程
  • 進(jìn)一步深入Ruby中的類(lèi)與對(duì)象概念

標(biāo)簽:南昌 大慶 西雙版納 內(nèi)江 河池 甘孜 棗莊 克拉瑪依

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Ruby中處理文件的輸入和輸出的教程》,本文關(guān)鍵詞  在,Ruby,中,處理,文件,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Ruby中處理文件的輸入和輸出的教程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于在Ruby中處理文件的輸入和輸出的教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    两当县| 盐山县| 巴东县| 台南市| 武川县| 怀安县| 普兰县| 昌都县| 安岳县| 资溪县| 霸州市| 西城区| 清远市| 中超| 开封市| 曲阳县| 绥棱县| 花垣县| 方山县| 灯塔市| 龙州县| 吉木萨尔县| 南雄市| 云南省| 松阳县| 东明县| 英吉沙县| 织金县| 樟树市| 牡丹江市| 吐鲁番市| 澄江县| 霍山县| 扎鲁特旗| 延长县| 上林县| 通许县| 陇西县| 东光县| 乐清市| 新昌县|