一步一步学Ruby(二十一):文件操作2
生活随笔
收集整理的這篇文章主要介紹了
一步一步学Ruby(二十一):文件操作2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、打開讀取文件
file = File.open( "cnblogslink.txt" ) file.each { |line| print "#{file.lineno}. ", line } file.close輸出:
1. 社區
2. 新聞
3. 社區
4. 新聞
5. 招聘
6. 博問
7. 小組?
8. 閃存?
9. 網摘?
10. .NET頻道
file.lineno顯示的是行號
2、ARGV and ARGF
ARGV
ARGV << "cnblogslink.txt"#The gets method is a Kernel method that gets lines from ARGV print while getsp ARGV.class=begin 輸出:社區新聞 社區新聞 招聘 博問 小組 閃存 網摘 .NET頻道Array =endARGF
我們在test.rb里寫如下代碼:
while line = ARGF.getsprint line end在命令行里執行得到如下結果
c:\studyruby>test.rb cnblogslink.txt cnblogslink2.txt 社區 新聞 社區 新聞 招聘 博問 小組 閃存 網摘 .NET頻道 社區 新聞 社區 新聞 招聘 博問 小組 閃存 網摘 .NET頻道3、文件信息查詢
#文件是否存在 p File::exists?( "cnblogslink.txt" ) # => true#是否是文件 p File.file?( "cnblogslink.txt" ) # => true#是否是目錄 p File::directory?( "c:/ruby" ) # => true p File::directory?( "cnblogslink.txt" ) # => false#文件權限 p File.readable?( "cnblogslink.txt" ) # => true p File.writable?( "cnblogslink.txt" ) # => true p File.executable?( "cnblogslink.txt" ) # => false#是否是零長度 p File.zero?( "cnblogslink.txt" ) # => false#文件大小 bytes p File.size?( "cnblogslink.txt" ) # => 74 p File.size( "cnblogslink.txt" ) # => 74#文件或文件夾 p File::ftype( "cnblogslink.txt" ) # => "file"#文件創建、修改、最后一次存取時間 p File::ctime( "cnblogslink.txt" ) # => Sat Sep 19 08:05:07 +0800 2009 p File::mtime( "cnblogslink.txt" ) # => Sat Sep 19 08:06:34 +0800 2009 p File::atime( "cnblogslink.txt" ) # => Sat Sep 19 08:05:07 +0800 20094、查找文件
puts "查找目錄下所有文件及文件夾" Dir["c:/ruby/*"].each {|x| puts x } puts "條件查詢" Dir.foreach('c:/ruby') { |x| puts x if x != "." && x != ".." }puts "查找某一類型文件" Dir["*.rb"].each {|x| puts x}puts "Open 查詢" Dir.open('c:/ruby') { |d| d.grep /l/ }.each{|x| puts x}puts "---------------------------" Dir.open('c:/ruby') { |d| d.each { |x| puts x } }puts "正則表達式查詢" Dir["c:/ruby/ruby/[rs]*"].each{|x| puts x} puts "------------------------" Dir["c:/ruby/[^s]*"].each{|x| puts x}puts "------------------------" Dir["c:/ruby/{ruby,li}*"].each{|x| puts x} puts "------------------------" Dir["c:/ruby/?b*"].each{|x| puts x} puts "查找目錄及子目錄的文件" require 'find' Find.find('./') { |path| puts path }以上內容得到以下輸出:
>ruby test.rb 查找目錄下所有文件及文件夾 c:/ruby/bin c:/ruby/ChangeLog.txt c:/ruby/doc c:/ruby/lib c:/ruby/LICENSE.txt c:/ruby/man c:/ruby/MANIFEST c:/ruby/misc c:/ruby/README.1st c:/ruby/ReleaseNotes.txt c:/ruby/ruby.ico c:/ruby/rubyopt.del c:/ruby/rubyw.ico c:/ruby/samples c:/ruby/scite c:/ruby/share c:/ruby/src c:/ruby/uninstall.exe 條件查詢 bin ChangeLog.txt doc lib LICENSE.txt man MANIFEST misc README.1st ReleaseNotes.txt ruby.ico rubyopt.del rubyw.ico samples scite share src uninstall.exe 查找某一類型文件 test.rb test2.rb Open 查詢 lib ReleaseNotes.txt rubyopt.del samples uninstall.exe --------------------------- . .. bin ChangeLog.txt doc lib LICENSE.txt man MANIFEST misc README.1st ReleaseNotes.txt ruby.ico rubyopt.del rubyw.ico samples scite share src uninstall.exe 正則表達式查詢 ------------------------ c:/ruby/bin c:/ruby/ChangeLog.txt c:/ruby/doc c:/ruby/lib c:/ruby/LICENSE.txt c:/ruby/man c:/ruby/MANIFEST c:/ruby/misc c:/ruby/README.1st c:/ruby/ReleaseNotes.txt c:/ruby/ruby.ico c:/ruby/rubyopt.del c:/ruby/rubyw.ico c:/ruby/uninstall.exe ------------------------ c:/ruby/ruby.ico c:/ruby/rubyopt.del c:/ruby/rubyw.ico c:/ruby/lib c:/ruby/LICENSE.txt ------------------------ 查找目錄記子目錄的文件 ./ ./test2.rb ./test2 ./test2/test2.rb ./test2/test.rb ./test1 ./test.rb ./output ./films.txt ./cnblogslink2.txt ./cnblogslink.txt ./beans.txt >Exit code: 0總結
以上是生活随笔為你收集整理的一步一步学Ruby(二十一):文件操作2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python笔记记录神器 jupyter
- 下一篇: libc 无法访问null_C中strl