zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CentOS安装python setuptools and pip
    Memcached集群:Magent缓存代理使用
    PHP上传类 图片上传 upload class实现image crop resize 缩略图
    CentOS全自动一键安装PHP,MySQL,phpmyadmin与Nginx
    【转】浅析linux内存模型
    【转】深入浅出异步I/O模型
    【转】客户/服务器程序设计范式
    【转】如何保证睡眠的情况下把各种事情做好
    【转】非教育网中IPv4网络访问IPv6资源
    busybox介绍
  • 原文地址:https://www.cnblogs.com/wf0117/p/9043495.html
Copyright © 2011-2022 走看看