Ruby语言入门(17)- 内部类 -File

上一篇 / 下一篇  2013-02-05 14:08:23 / 个人分类:语言

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")        
=> "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")        
=> ".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")
=>true
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.

myfile.chown(1, 223)
=>0

flock(operation)
锁定文件. 锁定成功时返回0.可用的operation列表:
LOCK_SH共享锁. 若干个进程可同时共享锁定.
LOCK_EX排它锁.在某时刻,只有一个进程能控制锁.
LOCK_UN解锁.
LOCK_NB非阻塞模式.

myfile.flock(File::LOCK_SH)
=>0

path
以字符串形式返回打开文件时使用的路径.

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
=>";"



TAG:

 

评分:0

我来说两句

日历

« 2024-04-06  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 149472
  • 日志数: 185
  • 文件数: 6
  • 建立时间: 2007-08-06
  • 更新时间: 2015-01-06

RSS订阅

Open Toolbar