類方法
路徑相關:
- 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對象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的值 - 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,否則返回其大小。在測試的條件語句中很有用
實例方法
最后了解一下於文件操作相關的庫:
find,tempfile,fileutils,pathname
參考:https://ninghao.net/blog/4097
http://www.cnblogs.com/cnblogsfans/archive/2009/09/17/1568804.html