亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Ruby操作文件的詳細教程

2020-02-24 15:40:47
字體:
來源:轉載
供稿:網友

  下面小編給大家整理出了一篇關于ruby.html" target="_blank">Ruby操作文件的詳細教程,感興趣的朋友跟小編一起來了解一下吧!

  Ruby提供了一套完整的I/O相關的內核模塊中實現方法。所有I/O方法來自IO類。

  類IO提供了所有的基本方法,如 read, write, gets, puts, readline, getc 和 printf.

  本章將涵蓋所有可供在Ruby中使用的基本I/O功能。如需使用更多的功能,請參考Ruby的IO類。

  puts 語句:

  在前面的章節中,你指定值的變量和然后使用聲明 puts 輸出。

  puts 把語句指示程序顯示存儲在變量值。這將添加一個新行,每行末尾寫出(輸出)。

  例子:

  #!/usr/bin/ruby

  val1 = "This is variable one"

  val2 = "This is variable two"

  puts val1

  puts val2

  這將產生以下結果:

  This is variable one

  This is variable two

  gets 語句:

  gets 語句可以用來從用戶從標準屏幕采取輸入調用 STDIN.

  例如:

  下面的代碼顯示了如何使用 gets 語句。此代碼將提示用戶輸入一個值,將被存儲在一個變量val,最后將打印在 STDOUT.

  #!/usr/bin/ruby

  puts "Enter a value :"

  val = gets

  puts val

  這將產生以下結果:

  Enter a value :

  This is entered value

  This is entered value

  putc 語句:

  與 puts 語句不相同,它在屏幕上輸出整個字符串,而putc 語句可以用來一次輸出一個字符。

  實例:

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

  #!/usr/bin/ruby

  str="Hello Ruby!"

  putc str

  這將產生以下結果:

  H

  print 語句:

  print 語句是類似 puts 語句。唯一的區別是,puts語句后進入到下一行打印的內容,print 語句將光標定位在同一行上。

  實例:

  #!/usr/bin/ruby

  print "Hello World"

  print "Good Morning"

  這將產生以下結果:

  Hello WorldGood Morning

  打開和關閉文件:

  到現在為止,我們已經可以讀取和寫入的標準輸入和輸出。我們將看看如何運用到實際的數據文件。

  File.new 方法:

  可以創建一個的File對象使用File.new方法的讀,寫或兩者兼有,這需要根據模式串。最后,可以使用File.close的方法來關閉該文件。

  語法:

  aFile = File.new("filename", "mode")

  # ... process the file

  aFile.close

  File.open 方法:

  可以使用File.open方法的方法來創建一個新的文件對象,并分配到一個文件中,文件對象。然而,File.open方法和File.new方法之間區別。 File.open方法不同的是,可以關聯一個塊,而不能在File.new方法使用。

  File.open("filename", "mode") do |aFile|

  # ... process the file

  end

  這里是一個不同的模式打開文件列表:

2015512120340068.jpg (585×415)

  讀取和寫入文件:

  同樣的方法,我們一直在使用“簡單”的I/O所有文件對象。因此,gets 從標準輸入讀取一行,File.gets文件從文件對象讀取一行。

  然而,I/O對象提供額外的訪問方法,使我們的生活更輕松。

  sysread 方法:

  可以使用該方法sysread讀取一個文件的內容。可以打開該文件時,在任何模式中使用的方法sysread。例如:

  以下是輸入文本文件:

  This is a simple text file for testing purpose.

  現在,讓我們嘗試讀取這個文件:

  #!/usr/bin/ruby

  aFile = File.new("input.txt", "r")

  if aFile

  content = aFile.sysread(20)

  puts content

  else

  puts "Unable to open file!"

  end

  這條語句將輸出文件的前20個字符。現在,將文件指針放置在第21個字符。

  syswrite 方法:

  可以使用方法 syswrite 中的內容寫入到一個文件中。需要打開該文件在寫入模式使用方法 syswrite 時。

  例如:

  #!/usr/bin/ruby

  aFile = File.new("input.txt", "r+")

  if aFile

  aFile.syswrite("ABCDEF")

  else

  puts "Unable to open file!"

  end

  這條語句將 “ABCDEF” 寫入到文件中。

  each_byte 方法:

  這種方法屬于類 File 。總是關聯一個塊方法each_byte。考慮下面的代碼示例::

  #!/usr/bin/ruby

  aFile = File.new("input.txt", "r+")

  if aFile

  aFile.syswrite("ABCDEF")

  aFile.each_byte {|ch| putc ch; putc ?. }

  else

  puts "Unable to open file!"

  end

  一個接一個字符傳遞變量ch,然后在屏幕上顯示如下:

  s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e...

  .

  .

  IO.readlines 方法:

  類File 是 IO類的一個子類。類的IO也有一些方法可用于對文件進行操作。

  IO類的方法之一是IO.readlines。此方法返回的內容文件行。下面的代碼顯示使用方法IO.readlines:

  #!/usr/bin/ruby

  arr = IO.readlines("input.txt")

  puts arr[0]

  puts arr[1]

  在這段代碼中,變量arr是一個數組。將文件 input.txt 的每一行,將數組arr中的元素。因此arr[0]將包含在第一行,而到達[1]將包含該文件的第二行。

  IO.foreach 方法:

  此方法還返回一行一行的輸出。foreach和 readlines 方法之間的差異是 foreach方法可以帶有塊相關聯,foreach不會返回一個數組。例如:

  #!/usr/bin/ruby

  IO.foreach("input.txt"){|block| puts block}

  此代碼將傳遞該文件的內容,測試可變塊的行,然后,輸出將被顯示在屏幕上。

  重命名和刪除文件:

  可以重命名和刪除文件用Ruby以編程方式使用 rename 和 delete 方法。

  下面的例子,重命名現有文件 test1.txt:

  #!/usr/bin/ruby

  # Rename a file from test1.txt to test2.txt

  File.rename( "test1.txt", "test2.txt" )

  下面的例子刪除現有文件 test2.txt:

  #!/usr/bin/ruby

  # Delete file test2.txt

  File.delete("text2.txt")

  文件模式和所有權:

  使用chmod掩碼的方法來改變模式或權限/訪問的文件列表:

  下面的例子改變現有的文件test.txt模式掩碼值:

  #!/usr/bin/ruby

  file = File.new( "test.txt", "w" )

  file.chmod( 0755 )

  以下的表可以幫助選擇不同的面具為chmod方法:

2015512120613148.jpg (576×528)

  文件查詢:

  下面的命令測試一個文件是否存在,然后再打開它:

  #!/usr/bin/ruby

  File.open("file.rb") if File::exists?( "file.rb" )

  下面的命令查詢文件是否是真是個文件:

  #!/usr/bin/ruby

  # This returns either true or false

  File.file?( "text.txt" )

  給定文件名是否為一個目錄,下面的命令查找:

  #!/usr/bin/ruby

  # a directory

  File::directory?( "/usr/local/bin" ) # => true

  # a file

  File::directory?( "file.rb" ) # => false

  下面的命令查找該文件是否可讀,可寫或可執行文件:

  #!/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

  下面的命令返回的文件大小:

  #!/usr/bin/ruby

  File.size?( "text.txt" ) # => 1002

  可以使用下面的命令找出一種類型的文件:

  #!/usr/bin/ruby

  File::ftype( "test.txt" ) # => file

  ftype 方法識別的文件類型返回下列之一: file, directory, characterSpecial, blockSpecial, fifo, link, socket 或 unknown.

  下面的命令可以用來發現當一個文件被創建,修改或上次訪問:

  #!/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也沒有處理這些問題。鑒于文件中類處理文件,使用目錄處理Dir類。

  通過目錄導航:

  要改變一個Ruby程序的目錄內,可使用Dir.chdir如下。這個例子改變當前目錄 /usr/bin.

  Dir.chdir("/usr/bin")

  可以使用 Dir.pwd 找出當前目錄是什么:

  puts Dir.pwd # This will return something like /usr/bin

  得到一個使用一個特定的目錄內的文件和目錄列表,使用 Dir.entries:

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

  Dir.entries 返回一個數組的指定目錄內的所有項目。Dir.foreach 提供了相同的功能:

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

  puts entry

  end

  更簡捷的方法獲取目錄列表利用 Dir 類數組的方法:

  Dir["/usr/bin/*"]

  創建一個目錄:

  可以用 Dir.mkdir,來創建目錄:

  Dir.mkdir("mynewdir")

  還可以設置一個新的目錄權限(不是一個已經存在的)用mkdir:

  注: 掩碼755設置權限所有者,組表示 [所有人] 類似于 rwxr-xr-x , r = read, w = write, and x = execute.

  Dir.mkdir( "mynewdir", 755 )

  刪除目錄:

  可用 Dir.delete 刪除一個目錄。Dir.unlink 和 Dir.rmdir 執行完全相同的功能,并提供了方便。

  Dir.delete("testdir")

  創建文件和臨時目錄:

  臨時文件是程序的執行過程中可能會產生短暫的,但不是永久存儲的信息。

  Dir.tmpdir 提供對當前系統的臨時目錄的路徑,盡管該方法是默認不可用。為了使 Dir.tmpdir 必要使用需要 'tmpdir'.

  可以使用 Dir.tmpdir 及 File.join,創建一個獨立于平臺的臨時文件:

  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)

  此代碼創建一個臨時文件,寫入數據,并刪除它。 Ruby的標準庫還包括一個程式庫Tempfile ,它可以創建臨時文件:

  require 'tempfile'

  f = Tempfile.new('tingtong')

  f.puts "Hello"

  puts f.path

  f.close

  內置功能:

  這里是Ruby的支持功能,處理文件和目錄的完整列表:

  File Class and Methods.

  Dir Class and Methods.

  以上就是Ruby操作文件的詳細教程了,更多相關內容請繼續關注武林技術頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品一区二区三区| 亚洲自拍偷拍视频| 国产欧美日韩中文字幕| 亚洲第一中文字幕在线观看| 久久香蕉国产线看观看av| 亚洲va码欧洲m码| 国产精品网站入口| 视频在线观看一区二区| 亚洲女人天堂视频| 2019中文在线观看| 亚洲国内高清视频| 日本三级久久久| 久久久久久这里只有精品| 欧美性猛交xxxxx免费看| 亚洲欧美在线看| 中文字幕在线日韩| zzjj国产精品一区二区| 欧美香蕉大胸在线视频观看| 亚洲久久久久久久久久| 色av吧综合网| 九九热这里只有精品免费看| 超碰精品一区二区三区乱码| 久久国产精品久久久| 亚洲精品一二区| 91在线看www| 久久久久久久久久久91| 亚洲精品99久久久久中文字幕| 色老头一区二区三区| 欧美黄色小视频| 国产视频在线一区二区| 17婷婷久久www| 日本精品久久久久久久| 日韩精品久久久久久福利| 国产精品黄色av| 91精品国产自产91精品| 国产精品h片在线播放| 欧美日本啪啪无遮挡网站| 亚洲色图av在线| 欧美成人网在线| 668精品在线视频| 欧美成人一区在线| 91影院在线免费观看视频| 国产亚洲精品美女久久久久| 欧美老肥婆性猛交视频| 68精品国产免费久久久久久婷婷| 国产精品精品视频一区二区三区| 精品人伦一区二区三区蜜桃免费| 亚洲天堂男人天堂| 亚洲人午夜精品免费| 色吧影院999| 亚洲第一av网站| 日韩在线免费高清视频| 国产精品丝袜久久久久久不卡| 成人网欧美在线视频| 日韩av免费在线看| 狠狠躁夜夜躁人人爽超碰91| 久久精品中文字幕| 国产精品黄视频| 久久精品国产69国产精品亚洲| 亚洲成人网av| 亚洲美女精品成人在线视频| 国产一区二区黄| 精品久久久久久久久久久久久| 欧美亚洲激情视频| 欧美日韩国产第一页| 亚洲精品999| 国产精品视频内| 韩剧1988在线观看免费完整版| 日韩在线精品视频| 久久精品久久精品亚洲人| 国产精品久久久久影院日本| 日日噜噜噜夜夜爽亚洲精品| 亚洲欧洲国产一区| 国产一区二区美女视频| 茄子视频成人在线| 中文字幕亚洲字幕| 欧美日韩在线影院| 国产一区二区丝袜| 久久久久国产精品免费| 欧美日韩一区二区在线| 91国产视频在线播放| 亚洲精品美女免费| 国产综合久久久久久| 色妞欧美日韩在线| 久久亚洲精品中文字幕冲田杏梨| 欧美激情视频在线| 97精品一区二区视频在线观看| 热久久免费视频精品| 51视频国产精品一区二区| 亚洲欧美综合区自拍另类| 自拍偷拍亚洲精品| 日韩中文在线中文网三级| 青青a在线精品免费观看| 亚洲有声小说3d| 亚洲欧美国内爽妇网| 欧美高清在线视频观看不卡| 久久6免费高清热精品| 69av视频在线播放| 国产精品成熟老女人| 亚洲毛片在线观看| 国产精品一区二区三区久久| 国产综合久久久久久| 久久久亚洲国产| 日本三级韩国三级久久| 久久韩剧网电视剧| 久久久国产视频91| 亚洲成人xxx| 日韩av色在线| 日本久久久久亚洲中字幕| 国产精品一区专区欧美日韩| 精品亚洲aⅴ在线观看| 日韩欧美国产中文字幕| 亚洲性夜色噜噜噜7777| 欧美在线亚洲一区| 精品久久中文字幕久久av| 久久伊人91精品综合网站| 两个人的视频www国产精品| 精品国产一区二区三区在线观看| 欧美中文字幕在线视频| 国产福利精品av综合导导航| 一区二区三区在线播放欧美| 国产精品视频免费观看www| 伊人伊成久久人综合网小说| 97视频在线观看免费高清完整版在线观看| 欧美视频第一页| 久久久精品久久久| 日韩精品在线观看网站| 中文字幕亚洲综合| 精品视频一区在线视频| 亚洲欧美另类国产| 日本精品视频在线播放| 高清视频欧美一级| 国产精品福利在线观看网址| 亚洲精品自拍偷拍| 国产精品女视频| 日韩欧美精品免费在线| 992tv成人免费影院| 亚洲成人a级网| 精品久久久一区| 欧美大片在线看| 亚洲精品一区二区三区不| 日韩国产精品一区| 色哟哟入口国产精品| 欧美性猛交xxxxx免费看| 中文字幕一区二区精品| 久久久久九九九九| 另类美女黄大片| 日本成人精品在线| 久久久999精品视频| 日本不卡高字幕在线2019| 国产婷婷成人久久av免费高清| 国产精品男人的天堂| 国产精品一区二区三区免费视频| 韩国福利视频一区| 午夜精品久久17c| 在线精品91av| 久久国产精品久久久久久久久久| 久久伊人91精品综合网站| 国产精品丝袜久久久久久高清| 国产精品男女猛烈高潮激情| 97精品免费视频| 黑人欧美xxxx| 国产91精品久久久久久久| 国产精品久久久久久久久久小说|