ruby File类
Posted 难&道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象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
以上是关于ruby File类的主要内容,如果未能解决你的问题,请参考以下文章