ruby File類

類方法

  路徑相關:

  • File.basename(filename <, suffix>) -> string
    返回給定文件名 filename 的最後一部分。若是有 suffix 參數,且它出如今 filename 的末尾。 則它將被刪除。經過使用 ".*" 能夠去除任意擴展名
    File.basename('/home/test/ruby.rb')  #=> ruby.rb
    File.basename('/home/test/ruby.rb', '.rb') #=> ruby
    File.basename('/home/test/ruby.rb', '.*') #=> ruby

     

  • File.dirname(filename) -> filename
    返回給定文件 filename 中除了最後一部分的其他部分
    File.dirname('/home/test/ruby.rb') #=> /home/test
    File.dirname('ruby.rb') #=> .

     

  • File.extname(path) -> string
    返回文件的擴展名(文件名 path 中句點後面的部分)
    File.extname('test.rb')  #=> .rb
    File.extname('a/b/c/test.rb') #=> .rb
    File.extname('text') #=> ""

     

  • File.expand_path(filename, <dirstring>) -> filename
    轉換路徑名爲絕對路徑,除非有dirstring參數,相對路徑是相對於進程的當前工做目錄而言的,若是給定了 dirstring ,
    那麼它將做爲路徑的起點.給定的路徑可能以~開頭,它將被擴展爲進程主人的主目錄(環境變量HOME必須正確設置)
    ~user 擴展爲給定用戶的主目錄
    File.expand_path('test') #=> D:/Program Files/RubyMine 2017.1.5/workspace/File/test
    File.expand_path('test', 'D:/')  #=> D:/test

     

  • File.split(filename) -> array
    把給定的字符串分割成目錄和文件,並返回包含它們的具備兩個元素的數組
    File.split('/home/test/ruby.rb') #=> ['/home/test', 'ruby.rb']
    File.split('ruby.rb')  #=> ['.', 'ruby.rb']
  • File.join(<string>+) -> filename
    使用 File::SEPARATOR 鏈接字符串,並返回該新結果字符串
    File.join('user', 'mail', 'ruby.rb') #=> user/mail/ruby.rb

     

  • File.rename(oldname, newname) -> 0
    重命名給定的文件或者目錄爲新名字,若是不能成功重命名,則引起SystemCallError
    File.rename('1.txt', '2.txt')

     

  • File.directory?(path) -> true or false
    若是給定的文件是目錄,則返回true,不然返回false
    File.directory?('.') #-> true

     

  • File.exist?(filename) -> true or false
    若是給定的文件或目錄存在,則返回true
    File.exist?('test.txt') #-> true

     

  • File.file?(filename) -> true or false
    若是給定的文件是一個普通文件(不是設備文件,目錄,管道,socket等等),則返回true
    File.file?('test.txt') #=> true
    File.file?('.')  #=> false

     

  • File.socket?(filename) -> true or false
    若是給定的文件是socket文件則返回true,若是不是或者操做系統不支持這種特性則返回false
    File.socket?('test.txt') #=> false

     

  時間

  • File.atime(filename) -> time
    返回一個包含文件最後訪問時間的Time對象,若是文件未被訪問過,則返回紀元時間

  • File.ctime(filename) -> time
    返回一個含有給定文件最後狀態修改時間的Time對象

  • File.mtime(filename) -> time
    返回包含文件被修改時間的一個Time對象

 

  文件建立

  • File.new(filename, modestring='r') -> file
    File.new(filename <, modenum <, permission>>) -> file
    File.new(fd <, modenum <, permission>>) -> file
    根據模式modestring(默認爲r)打開名爲filename的文件(或關聯已經打開的文件描述符fd)並返回一個新的File對象html

    File.new('afile', 'r')
    File.new('bfile', 'w+')
    File.new('cfile', File::CREAT|File::TRUNC|File::RDWR)
  • File.open(filename, modestring='r') -> file
    File.open(filename <, modenum <, permission>>) -> file
    File.open(fd <, modenum <, permission>>) -> file
    File.open(filename, modestring='r'){|file| block } -> obj
    File.open(filename <, modenum <, permission>>){|file| block } -> obj
    File.open(fd <, modenum <, permission>>){|file| block } -> obj數組

    若是沒有關聯的block,那麼open和File.new同義,若是提供了代碼block,他將傳遞file做爲參數,
    而且當block執行結束時文件將被自動關閉,這種狀況下,File.open返回block的值

    ruby

  • File.readable?(filename) -> true or false
    若是本進程的有效用戶ID能夠讀給定的文件,則返回true
    File.readable?('test.txt') #=> true

     

  • File.writable?(filename) -> true or false
    若是給定的文件能夠被進程的有效用戶ID寫,則返回true
    File.writable?('test.txt') #-> true

     

  • File.size(filename) -> int
    返回文件的字節大小
    File.size('test.txt') #=> 9

     

  • File.size?(filename) -> int or nil
    若是給定文件的長度爲0,則返回nil,不然返回其大小。在測試的條件語句中頗有用

  

實例方法

 

最後瞭解一下於文件操做相關的庫:socket

find,tempfile,fileutils,pathname測試

參考:https://ninghao.net/blog/4097spa

     http://www.cnblogs.com/cnblogsfans/archive/2009/09/17/1568804.html操作系統

相關文章
相關標籤/搜索