File类是访问文件用的类。通常使用open或File.open来生成。
类方法
File.atime(filename)
File.ctime(filename)
File.mtime(filename)
它们分别返回:文件的最终访问时间/文件状态的最终变更时间/最终更新时间(Time对象)。
File.atime("c:\\test.txt")
=>2013-02-04 18:40:21 +0800
File.ctime("c:\\test.txt")
=>2013-02-04 16:33:08 +0800
File.mtime("c:\\test.txt")
=>2013-02-04 17:08:40 +0800
File.basename(filename[, suffix])
返回filename中的最后一条斜线后面的部分。若给出了参数suffix且它和filename的尾部一致时,该方法会将其删除并返回结果。
File.basename("c:\\test.txt")
File.basename("c:\\test.txt", "txt")
=> "test."
File.basename("c:\\test.txt", ".*")
=> "test"
File.basename("c:\\test.txt", ".")
=> "test.txt"
File.dirname(filename)
以字符串的形式返回filename中最后一条斜线之前的部分。若文件名中不含斜线,则返回"."(当前目录)。
File.dirname("c:\\test.txt")
=> "c:\\"
File.extname(filename)
返回文件名filename中的扩展名部分(跟在最后的"."之后的部分)。目录名中的"."和文件名头上的"."不会被看作扩展名的一部分。若filename中不含扩展名则返回空字符串。
File.extname("c:\\test.txt")
=> ".txt"
File.extname("c:/test.txt")
File.extname("c:/test")
=> ""
(在windows的irb下,\\ 等同于 /)
File.chmod(mode[, filename[, ...]])
File.lchmod(mode[, filename[, ...]])
将文件的模式改为mode。它返回修改文件的个数。lchmod只修改符号连接中的连接本身的模式。
mode可以是:
"r", RDONLY: 以读取模式打开文件.
"w", WRONLY|CREAT|TRUNC: 以写入模式打开文件.打开文件时,若文件已存在就清空文件内容.
"a", WRONLY|CREAT|APPEND: 以写入模式打开文件.通常把写入内容添加到文件结尾.
若有"+"的话,就以读写两用模式(RDWR)打开文件.
"r+": 将文件的读写位置设在开头.
"w+": 与"r+"一样.打开文件时,若文件已存在就清空其内容.
"a+": 与"r+"一样.打开文件时,若文件已存在,就把读写位置设在文件结尾.
File.chown(owner, group[, filename[, ...]])
File.lchown(owner, group[, filename[, ...]])
修改文件的owner和group。只有超级用户才能修改文件的owner和group。它返回修改文件的个数。lchown只修改符号连接中的连接本身的owner和group。
File.delete(filename ... )
File.unlink(filename ... )
删除文件。返回删除文件的个数。该方法是用来删除普通文件的。而删除目录时要使用Dir.rmdir。
File.delete("c:\\test.txt")
=>1
File.delete("c:\\test.txt", "c:\\test1.txt", "c:\\test2.txt")
=>3
File.expand_path(path[, default_dir])
将path展开为绝对路径后返回该路径字符串。若path是相对路径则以default_dir为基准进行扩展。若没有default_dir或其值为nil时将使用当前目录。
File.expand_path(("c:/test.txt")
=>"c:/test.txt"
File.expand_path((".")
=>"c:/Sites"
File.expand_path(("..")
=>"c:/"
File.fnmatch(pattern, path[, flags])
File.fnmatch?(pattern, path[, flags])
对文件名进行模式匹配(fnmatch(3))。若path与pattern相匹配则返回真。
File.fnmatch("*", "c:/test.txt")
=>true
File.fnmatch("c:/*", "c:/test.txt")
File.fnmatch("c:/", "c:/test.txt")
=>false
flags中可以任意使用下列常数(定义在File::Constants模块中)中的若干个来改变模式匹配的运作情况。flags的默认值为0(不指定标识)。
FNM_NOESCAPE将转义字符`\'看作普通字符。
File.fnmatch('\*', '\a')
=> false
File.fnmatch('\*', '\a', File::FNM_NOESCAPE)
=> true
FNM_PATHNAME 通配符'*', '?', '[]'将不再匹配'/'
FNM_CASEFOLD进行匹配时,不区分大小写字母
FNM_DOTMATCH 通配符'*', '?', '[]'将匹配于开头的'.'
File.ftype(filename)
返回表示文件类型的字符串。该字符串应为下列之一:
"file"
"directory"
"characterSpecial"
"blockSpecial"
"fifo"
"link" (若为符号连接则返回"link")。
"socket"
"unknown"
File.ftype("c:/test.txt")
=>"file"
File.ftype("c:")
=>"directory"
File.join(item, item, ...)
将File::SEPARATOR置入其中连成字符串
a="c:/"
b="test.txt"
c=File.join(a, b)
=>"c:/test.txt"
File.link(old, new)
生成一个指向old且名为new的硬连接(hard link)。old必须是现存的。
File.link("c:/test.txt", "c:/test1.txt")
=>0
(在c:下生成新文件test1.txt)
File.new(path[, mode [, perm]])
File.open(path[, mode [, perm]])
File.open(path[, mode [, perm]]) {|file| ... }
打开path所指文件并返回文件对象。
mode可以是:
"r", RDONLY: 以读取模式打开文件.
"w", WRONLY|CREAT|TRUNC: 以写入模式打开文件.打开文件时,若文件已存在就清空文件内容.
"a", WRONLY|CREAT|APPEND: 以写入模式打开文件.通常把写入内容添加到文件结尾.
若有"+"的话,就以读写两用模式(RDWR)打开文件.
"r+": 将文件的读写位置设在开头.
"w+": 与"r+"一样.打开文件时,若文件已存在就清空其内容.
"a+": 与"r+"一样.打开文件时,若文件已存在,就把读写位置设在文件结尾.
File.readlink(path)
以字符串形式返回字符连接的连接对象。
File.rename(from, to)
修改文件名称。若目录不同时,将进行移动
File.split(pathname)
将pathname分为dirname和basename,并返回一个包含这两部分的数组
File.split("c:/test.txt")
=>["c:","test.text"]
File.stat(filename)
File.lstat(filename)
生成并返回一个包含filename信息的File::Stat对象。
File.symlink(old, new)
生成一个指向old且名为new的符号连接。
File.truncate(path, length)
将path所指文件裁减为至多length字节的文件。
File.umask([umask])
修改umask。返回修改前的umask值。若省略umask则不修改,返回当前的umask值。
File.utime(atime, mtime[, filename[, ...]])
修改文件的最终访问时间和更新时间。返回修改的文件数。
File.blockdev?(path)
File.chardev?(path)
File.directory?(path)
File.executable?(path)
File.executable_real?(path)
File.exist?(path)
File.file?(path)
File.grpowned?(path)
File.owned?(path)
File.pipe?(path)
File.readable?(path)
File.readable_real?(path)
File.setgid?(path)
File.setuid?(path)
File.size(path)
File.size?(path)
File.socket?(path)
File.sticky?(path)
File.symlink?(path)
File.writable?(path)
File.writable_real?(path)
File.zero?(path)
判断指定文件的一些属性和判断。
实例方法
atime
ctime
mtime
它们分别返回:文件的最终访问时间/文件状态的最终变更时间/最终更新时间
myfile = File.new("c:/test.txt")
myflie.atime
=>2013-02-04 18:40:21 +0800
chmod(mode)
将文件模式修改为mode.若修改成功则返回0.
myfile.chmod(112211)
=>0
chown(owner, group)
修改文件的owner和group.只有超级用户才能修改文件的owner和group.修改成功则返回0.
flock(operation)
锁定文件. 锁定成功时返回0.可用的operation列表:
LOCK_SH共享锁. 若干个进程可同时共享锁定.
LOCK_EX排它锁.在某时刻,只有一个进程能控制锁.
myfile.flock(File::LOCK_SH)
=>0
myfile.path
=>"c:/test.txt"
lstat
生成并返回一个包含文件状态信息的File::Stat对象
myfile.lstat
=> #<File::Stat dev=0x0 ..... +0800?
truncate(length)
将文件裁剪成至多length字节大小的文件.
myfile.truncate(10240)
=>0
常数:
ALT_SEPARATOR
当系统的文件路径分隔符与SEPARATOR不同时,即可使用该常数.在MS-DOS等系统中是"\",而在UNIX 或Cygwin等系统中则是nil.
PATH_SEPARATOR
PATH环境变量的元素分隔符.在UNIX中是":",而在MS-DOS等系统中是";".
SEPARATOR
Separator
文件路径的分隔符. 例如,在将路径名传给处理文件的方法时就会用到它. 该分隔符使得脚本内的路径名的格式统一且不受环境的影响.其值为"/".
File::PATH_SEPARATOR
=>";"