- 浏览: 1381611 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
dare_:
经过试验 设置之后反而更慢没有调用ensureCapacity ...
ensureCapacity()方法提高ArrayList的初始化速度 -
wangchao9053:
[flash=200,200][url][img][list] ...
Only the original thread that created a view hierarchy can touch its views的相关 -
cyb504:
考虑将rb文件代码隐藏:我先使用命令jrubyc将所有rb文件 ...
Ruby学习十 JRuby中调用java代码 -
4562xse3460:
大哥,您这个写反了,差点误导我,我觉得看着就不对。百度第一条就 ...
portrait表示纵向,landscape表示横向 -
yin138:
portrait是肖像画,即竖屏,landscape是风景画, ...
portrait表示纵向,landscape表示横向
http://www.kuqin.com/rubycndocument/man/built-in-class/class_object_io_file.html
File.split(pathname)
<!-- RDLabel: "File.split" -->
将pathname分为dirname
和basename
,并返回一个包含这两部分的数组。它与
[File.dirname(pathname), File.basename(pathname)]
相同。
访问文件用的类。通常使用open或File.open来生成。
超类:<!-- RDLabel: "超类:" -->
包含的模块:<!-- RDLabel: "包含的模块:" -->
- File::Constants
ruby 1.8 特性: File::Constants已被包含在IO之中。
类方法:<!-- RDLabel: "类方法:" -->
File.atime(filename)
<!-- RDLabel: "File.atime" --> File.ctime(filename)
<!-- RDLabel: "File.ctime" --> File.mtime(filename)
<!-- RDLabel: "File.mtime" --> 它们分别返回:文件的最终访问时间/文件状态的最终变更时间/最终更新时间(Time对象)。
若未能成功取得文件时间则引发Errno::EXXX异常。
File.basename(filename[, suffix])
<!-- RDLabel: "File.basename" --> 返回filename中的最后一条斜线后面的部分。若给出了参数suffix且它和filename的尾部一致时,该方法会将其删除并返回结果。
例:
p File.basename("ruby/ruby.c") #=> "ruby.c" p File.basename("ruby/ruby.c", ".c") #=> "ruby" p File.basename("ruby/ruby.c", ".*") #=> "ruby" p File.basename("ruby/ruby.exe", ".*") #=> "ruby"
另外,请参考File.dirname和File.extname。
从1.6.8到1.8.0版本间的修改(小结)
修改之后,File.basename的动作遵循SUSv3的规定。
p File.basename("foo/bar/") # => "bar" 以前是""
File.chmod(mode[, filename[, ...]])
<!-- RDLabel: "File.chmod" --> File.lchmod(mode[, filename[, ...]]) ((<ruby 1.7 特性>))
<!-- RDLabel: "File.lchmod" --> 将文件的模式改为mode。它返回修改文件的个数。若修改模式失败则引发Errno::EXXX异常。
mode与chmod(2)一样,使用数值来指定其内容。
lchmod
只修改符号连接中的连接本身的模式。在未安装lchmod(2)的系统中调用该方法时会引发NotImplementedError异常。
File.chown(owner, group[, filename[, ...]])
<!-- RDLabel: "File.chown" --> File.lchown(owner, group[, filename[, ...]]) ((<ruby 1.7 特性>))
<!-- RDLabel: "File.lchown" --> 修改文件的owner和group。只有超级用户才能修改文件的owner和group。它返回修改文件的个数。若修改失败则引发Errno::EXXX异常。
owner、group与chown(2)一样,使用数值来指定其内容。若只想修改其中之一时,可以将不想修改的一方指定为nil或-1,这样就可以保持原状了。
lchown
只修改符号连接中的连接本身的owner和group。在未安装lchown(2)的系统中调用该方法时会引发NotImplementedError异常。
File.delete(filename ... )
<!-- RDLabel: "File.delete" --> File.unlink(filename ... )
<!-- RDLabel: "File.unlink" --> 删除文件。返回删除文件的个数。若删除失败则引发Errno::EXXX异常。
该方法是用来删除普通文件的。而删除目录时要使用Dir.rmdir。
File.dirname(filename)
<!-- RDLabel: "File.dirname" --> 以字符串的形式返回filename中最后一条斜线之前的部分。若文件名中不含斜线,则返回"."
(当前目录)。
例:
p File.dirname("dir/file.ext") # => "dir" p File.dirname("file.ext") # => "."
另外,请参考File.basename, File.extname 。
ruby 1.8 特性
修改后,File.dirname的动作遵守SUSv3的规定。
p File.dirname("foo/bar/") # => "foo" 以前是、"foo/bar" p File.dirname("foo//bar") # => "foo" 以前是、"foo/"
File.expand_path(path[, default_dir])
<!-- RDLabel: "File.expand_path" --> 将path展开为绝对路径后返回该路径字符串。若path是相对路径则以default_dir为基准进行扩展。若没有default_dir或其值为nil
时将使用当前目录。
开头的~
会被扩展为主目录(使用环境变量HOME),而~USER
会被扩展为相应用户的主目录。
p File.expand_path("..") #=> "/home/matz/work" p File.expand_path("..", "/tmp") #=> "/" p File.expand_path("~") #=> "/home/matz" p File.expand_path("~foo") #=> "/home/foo"
File.extname(filename) ((<ruby 1.7 特性>))
<!-- RDLabel: "File.extname" --> 返回文件名filename中的扩展名部分(跟在最后的"."之后的部分)。目录名中的"."和文件名头上的"."不会被看作扩展名的一部分。若filename中不含扩展名则返回空字符串。
p File.extname("foo/foo.txt") # => ".txt" p File.extname("foo/foo.tar.gz") # => ".gz" p File.extname("foo/bar") # => "" p File.extname("foo/.bar") # => "" p File.extname("foo.txt/bar") # => "" p File.extname(".foo") # => ""
File.fnmatch(pattern, path[, flags]) ((<ruby 1.7 特性>))
<!-- RDLabel: "File.fnmatch" --> File.fnmatch?(pattern, path[, flags]) ((<ruby 1.7 特性>))
<!-- RDLabel: "File.fnmatch?" --> 对文件名进行模式匹配(fnmatch(3))。若path与pattern相匹配则返回真。
pattern中可使用的通配符有`*', `?'和`[]'(与Dir.glob不同的是,这里不能使用`{}' 或 `**/')。
%w(foo foobar bar).each {|f| p File.fnmatch("foo*", f) } # => true true false
flags中可以任意使用下列常数(定义在File::Constants模块中)中的若干个来改变模式匹配的运作情况。flags的默认值为0(不指定标识)。
将转义字符`\'看作普通字符。
# 默认情况下,带\的字符都会匹配该字符本身, # 加上此标识后,\被当作普通字符处理。 p File.fnmatch('\a', 'a') # => true p File.fnmatch('\a', '\a', File::FNM_NOESCAPE) # => true # 在前者中,*发生了转义,只会匹配"*"字符 # 本身。 p File.fnmatch('\*', 'a') # => false p File.fnmatch('\*', '\a', File::FNM_NOESCAPE) # => true # 单独的\则不受此标识的影响,一律匹配于\。 # (请注意,在单引号内的字符串中,\\就是\) p File.fnmatch('\\', '\\') # => true p File.fnmatch('\\', '\\', File::FNM_NOESCAPE) # => true
通配符`*', `?', `[]'将不再匹配`/'。主要作用在shell的模式匹配中。
p File.fnmatch('*', '/', File::FNM_PATHNAME) # => false p File.fnmatch('?', '/', File::FNM_PATHNAME) # => false p File.fnmatch('[/]', '/', File::FNM_PATHNAME) # => false
进行匹配时,不区分大小写字母。
p File.fnmatch('A', 'a', File::FNM_CASEFOLD) # => true
通配符`*', `?', `[]'将匹配于开头的`.'。
p File.fnmatch('*', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('?', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('[.]', '.', File::FNM_DOTMATCH) # => true p File.fnmatch('foo/*', 'foo/.', File::FNM_DOTMATCH) # => true
File.ftype(filename)
<!-- RDLabel: "File.ftype" --> 返回表示文件类型的字符串。该字符串应为下列之一。与File.lstat(filename).ftype相同(若为符号连接则返回"link")。
"file" "directory" "characterSpecial" "blockSpecial" "fifo" "link" "socket" "unknown"
File.join(item, item, ...)
<!-- RDLabel: "File.join" --> 将File::SEPARATOR
置入其中连成字符串。它与
[item, item, ...].join(File::SEPARATOR)
相同。(此后可能提供DOSISH处理功能,但它依赖于系统环境。)
File.link(old, new)
<!-- RDLabel: "File.link" --> 生成一个指向old且名为new的硬连接(hard link)。old必须是现存的。
若成功生成硬连接就返回0。若失败则引发Errno::EXXX异常。
File.new(path[, mode [, perm]])
<!-- RDLabel: "File.new" --> File.open(path[, mode [, perm]])
<!-- RDLabel: "File.open" --> File.open(path[, mode [, perm]]) {|file| ... }
<!-- RDLabel: "File.open" --> 打开path所指文件并返回文件对象。若打开文件失败时引发Errno::EXXX异常。
参数mode, perm的用法与内部函数open相同。
open()
可以带块。若带块调用时,将把文件对象传给块,然后开始块的运行。当块终止运行时,文件将被自动关闭。
带块调用时的返回值是块的执行结果。
File.readlink(path)
<!-- RDLabel: "File.readlink" --> 以字符串形式返回字符连接的连接对象。若读取连接失败则引发Errno::EXXX异常。
File.rename(from, to)
<!-- RDLabel: "File.rename" --> 修改文件名称。若目录不同时,将进行移动。请参考rename(2)。若目标目录中有同名文件则会进行覆盖。
若成功移动文件就返回0。若失败则引发Errno::EXXX异常。
File.split(pathname)
<!-- RDLabel: "File.split" --> 将pathname分为dirname
和basename
,并返回一个包含这两部分的数组。它与
[File.dirname(pathname), File.basename(pathname)]
相同。
File.stat(filename)
<!-- RDLabel: "File.stat" --> File.lstat(filename)
<!-- RDLabel: "File.lstat" --> 生成并返回一个包含filename信息的File::Stat对象。若获取信息失败则引发Errno::EXXX异常。
lstat
返回符号连接中的连接本身的信息。在未安装lstat(2)的系统中,它与File.stat
相同。
请参考IO#stat,File#lstat 。
File.symlink(old, new)
<!-- RDLabel: "File.symlink" --> 生成一个指向old且名为new的符号连接。
若成功生成符号连接则返回0。若失败则引发Errno::EXXX异常。
File.truncate(path, length)
<!-- RDLabel: "File.truncate" --> 将path所指文件裁减为至多length字节的文件。
若成功更改大小时返回0。若失败则引发Errno::EXXX异常。
File.umask([umask])
<!-- RDLabel: "File.umask" --> 修改umask。返回修改前的umask值。若省略umask则不修改,返回当前的umask值。
File.utime(atime, mtime[, filename[, ...]])
<!-- RDLabel: "File.utime" --> 修改文件的最终访问时间和更新时间。返回修改的文件数。若修改失败则引发Errno::EXXX异常。
开始的两个参数必须是,表示时间的数值或Time类的实例。
File.blockdev?(path)
<!-- RDLabel: "File.blockdev?" --> 与FileTest.blockdev?相同。
File.chardev?(path)
<!-- RDLabel: "File.chardev?" --> 与FileTest.chardev?相同。
File.directory?(path)
<!-- RDLabel: "File.directory?" --> 与FileTest.directory?相同。
File.executable?(path)
<!-- RDLabel: "File.executable?" --> 与FileTest.executable?相同。
File.executable_real?(path)
<!-- RDLabel: "File.executable_real?" --> 与FileTest.executable_real?相同。
File.exist?(path)
<!-- RDLabel: "File.exist?" --> 与FileTest.exist?相同。
File.file?(path)
<!-- RDLabel: "File.file?" --> 与FileTest.file?相同。
File.grpowned?(path)
<!-- RDLabel: "File.grpowned?" --> 与FileTest.grpowned?相同。
File.owned?(path)
<!-- RDLabel: "File.owned?" --> 与FileTest.owned?相同。
File.pipe?(path)
<!-- RDLabel: "File.pipe?" --> 与FileTest.pipe?相同。
File.readable?(path)
<!-- RDLabel: "File.readable?" --> 与FileTest.readable?相同。
File.readable_real?(path)
<!-- RDLabel: "File.readable_real?" --> 与FileTest.readable_real?相同。
File.setgid?(path)
<!-- RDLabel: "File.setgid?" --> 与FileTest.setgid?相同。
File.setuid?(path)
<!-- RDLabel: "File.setuid?" --> 与FileTest.setuid?相同。
File.size(path)
<!-- RDLabel: "File.size" --> 与FileTest.size相同。
File.size?(path)
<!-- RDLabel: "File.size?" --> 与FileTest.size?相同。
File.socket?(path)
<!-- RDLabel: "File.socket?" --> 与FileTest.socket相同。
File.sticky?(path)
<!-- RDLabel: "File.sticky?" --> 与FileTest.sticky?相同。
File.symlink?(path)
<!-- RDLabel: "File.symlink?" --> 与FileTest.symlink?相同。
File.writable?(path)
<!-- RDLabel: "File.writable?" --> 与FileTest.writable?相同。
File.writable_real?(path)
<!-- RDLabel: "File.writable_real?" --> 与FileTest.writable_real?相同。
File.zero?(path)
<!-- RDLabel: "File.zero?" --> 与FileTest.zero?相同。
方法:<!-- RDLabel: "方法:" -->
atime
<!-- RDLabel: "atime" --> ctime
<!-- RDLabel: "ctime" --> mtime
<!-- RDLabel: "mtime" --> 它们分别返回:文件的最终访问时间/文件状态的最终变更时间/最终更新时间(Time对象)。
若未能成功取得文件时间则引发Errno::EXXX异常。
chmod(mode)
<!-- RDLabel: "chmod" --> 将文件模式修改为mode.若修改成功则返回0.若失败则引发Errno::EXXX异常.
mode同chmod(2)一样,使用数值来指定其内容.
chown(owner, group)
<!-- RDLabel: "chown" --> 修改文件的owner和group.只有超级用户才能修改文件的owner和group.修改成功则返回0,失败则引发Errno::EXXX异常.
owner,group同chown(2)一样,使用数值来指定其内容.若将其指定为nil或-1的话,就可以保留现在的状态.
flock(operation)
<!-- RDLabel: "flock" --> 锁定文件. 锁定成功时返回0. 失败则引发Errno::EXXX异常. 若在LOCK_NB状态下发生阻塞(block)则返回false.下列是可用的operation列表.
-
LOCK_SH
共享锁. 若干个进程可同时共享锁定.
根据系统的不同,有时要求锁定对象必须是以读取模式("r","r+"等)打开的才行. 在这些系统中,若对不可读文件进行锁定时,可能会引发Errno::EBADF异常.
-
LOCK_EX
排它锁.在某时刻,只有一个进程能控制锁.
根据系统的不同,有时要求锁定对象必须是以写入模式("w","r+"等)打开的才行. 在这些系统中,若对不可写文件进行锁定时,可能会引发Errno::EBADF异常.
-
LOCK_UN
解锁.
除了这种显式的解锁以外, 当Ruby解释器结束(进程结束)时,也会自动解锁.
-
LOCK_NB
非阻塞模式.
同
LOCK_SH | LOCK_NB
一样,它可以借用or与其他operation一起使用. 若没有指定LOCK_NB
的话,若在阻塞条件下调用flock
时,该阻塞将会一直持续到解锁时.若指定了
LOCK_NB
的话,若在阻塞时调用flock
则返回false
.所谓"阻塞时"是指发生下述情况
- 在其他进程已设置排它锁的情况下进行锁定
- 在其他进程已经锁定的情况下设置排它锁
的时候.
上述常数都被定义在模块中.
例:
f = File.open("/tmp/foo", "w") f.flock(File::LOCK_EX) puts "locked by process1" fork { f = File.open("/tmp/foo", "r") f.flock(File::LOCK_SH) puts "locked by process2" sleep 5 puts "unlocked by process2" } sleep 5 f.flock(File::LOCK_UN) puts "unlocked by process1" sleep 1 # <- 为确保子进程能够抢先进行锁定而进行的 sleep f.flock(File::LOCK_EX) puts "re-locked by process1" => locked by process1 unlocked by process1 locked by process2 unlocked by process2 re-locked by process1
path
<!-- RDLabel: "path" --> 以字符串形式返回打开文件时使用的路径.
lstat
<!-- RDLabel: "lstat" --> 生成并返回一个包含文件状态信息的File::Stat对象.若未能成功取得文件信息则引发Errno::EXXX异常.
lstat
只返回符号连接中的连接本身的信息. 在那些未安装lstat(2)的系统中,它与IO#stat相同.
另外,请参考IO#stat,File.stat和File.lstat.
truncate(length)
<!-- RDLabel: "truncate" --> 将文件裁剪成至多length字节大小的文件. 若文件并不是以写入模式打开的话,将引发IOError异常.
若修改成功则返回0,若失败则引发Errno::EXXX异常.
常数:<!-- RDLabel: "常数:" -->
ALT_SEPARATOR
<!-- RDLabel: "ALT_SEPARATOR" --> 当系统的文件路径分隔符与SEPARATOR
不同时,即可使用该常数.在MS-DOS等系统中是"\"
,而在UNIX 或Cygwin等系统中则是nil
.
PATH_SEPARATOR
<!-- RDLabel: "PATH_SEPARATOR" --> PATH环境变量的元素分隔符.在UNIX中是":"
,而在MS-DOS等系统中是";"
.
SEPARATOR
<!-- RDLabel: "SEPARATOR" --> Separator
<!-- RDLabel: "Separator" --> 文件路径的分隔符. 例如,在将路径名传给处理文件的方法时就会用到它. 该分隔符使得脚本内的路径名的格式统一且不受环境的影响.其值为"/"
.
内部类:<!-- RDLabel: "内部类:" -->
Constants
<!-- RDLabel: "Constants" --> 包括File类的相关常数的模块. 请参考File::Constants.
Stat
<!-- RDLabel: "Stat" --> 表示stat结构体(请参考stat(2))的类. 请参考File::Stat.
发表评论
-
rsync参数详解、利用ssh、rsync 实现数据的定时同步
2012-09-11 14:52 1704http://colderboy.blog.51cto.com ... -
putty
2011-12-02 10:50 1120http://www.iteye.com/topic/5606 ... -
haml
2011-12-01 22:53 1141http://aideehorn.iteye.com/blog ... -
ruby 生成随机数 和 随机字符串
2011-11-30 22:42 3535ruby 生成随机数 和 随机字符串 1,ra ... -
ruby and watir学习之_Hash 类
2011-11-20 17:53 1653http://www.cnblogs.com/zhangfei ... -
gem相关命令使用
2011-11-19 00:01 2851http://www.cnblogs.com/orez88/a ... -
Rails,启动-重要
2011-11-17 09:59 1792http://www.blogjava.net/sshwsfc ... -
使用 RSpec 进行行为驱动测试,配置分析
2011-11-11 13:21 1588http://huangzhimin.com/ < ... -
ruby的class与module的区别
2011-11-07 10:04 2370http://blog.163.com/rettar@126/ ... -
ruby invalid multibyte char (US-ASCII)
2011-11-05 01:57 4692要加上: # encoding: utf-8 一般要 ... -
Ruby怎样获取操作系统的Name
2011-11-05 01:30 1293http://bbs.chinaunix.net/thr ... -
Ruby String#unpack
2011-10-31 11:34 1297http://fuliang.iteye.com/blog/6 ... -
ruby环境变量的文件读取形式
2011-10-31 11:29 1860http://blog.csdn.net/normallife ... -
Ruby学习九 排序 sort
2011-10-26 20:06 3582h = ['1','10','11','2','4']A. p ... -
关于rails插件will_paginate的配置和用法
2011-10-26 15:56 4378http://selfcontroller.iteye.com ... -
ruby 中的 && ,|| ,!! (转)
2011-10-26 14:59 966http://selfcontroller.iteye.com ... -
Ruby中 respond_to? 和 send 的用法 .
2011-10-26 14:19 5361http://selfcontroller.iteye.com ... -
ruby 在线正则表达式 编辑器
2011-10-25 09:22 1751http://www.rubular.com/ -
ruby-Jruby,Xruby 转
2011-10-25 09:22 890ruby-Jruby,Xruby 2009年06月21 ... -
alias 与 alias_method的区别
2011-10-24 16:34 1802alias 与 alias_method的区别 (2009-7 ...
相关推荐
File file = new File(pathname); for (File f : file.listFiles()) { files.add(f); } File targetFile = new File(pathname+targetFileName); if(targetFile.exists()) { targetFile....
libencode-locale-perl libfile-listing-perl libfont-afm-perl libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl ...
var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1); return (localhostPaht + projectName); } ``` 在这个方法中,首先获取URL的路径部分(`pathname`),然后找到路径在完整URL中的...
segments: a.pathname.replace(/^\//, '').split('/') }; } ``` #### 三、函数分析 1. **创建 DOM 元素**: - `document.createElement('a')` 创建了一个新的 `<a>` 元素。 - `a.href = url` 设置了这个 `<a>`...
// pathname: '/path/to/file', // path: '/path/to/file?query=string', // href: 'http://user:pass@host.com:8080/path/to/file?query=string#hash' // } ``` ### 总结 以上介绍了两种在JavaScript中将URL解析...
FileStream fs = new FileStream(pathName, System.IO.FileMode.Open, System.IO.FileAccess.Read); byte[] buffer = new byte[fs.Length]; BinaryReader br = new BinaryReader(fs); br.Read(buffer, 0, buffer....
String[] strings = list[i].getPath().split("////"); for (int j = 0; j < strings.length; j++) { System.out.println(strings[j] + "%%%%%%%%%%%%%%%%%%%%"); } DefaultMutableTreeNode node = new ...
- Now completely compatible with PKZip and WinZip split archives file naming format. - For backwards compatability you can tell VCLZip to use the old VCLZip filenaming format by using the BlockMode ...
segments: a.pathname.replace(/^\//, '').split('/') }; } ``` 通过这个函数,我们可以很轻松地获取到如下的URL部分:协议(protocol)、主机名(host)、端口(port)、查询参数对象(params)、文件名(file)...
file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1], hash: a.hash.replace('#',''), path: a.pathname.replace(/^([^\/])/,'/$1'), relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1], ...
// File file = new File(pathname); List<String> list = new ArrayList(); readFile(pathname,list); for(int j=0;j<list.size();j++) { // System.out.println("当前第"+(j+1)+"个----"+list...
12. `Set File = fso.GetFile(pathname & var(i) & ".lnk")`: 获取创建的快捷方式文件对象。 13. `file.Attributes = 2 + 4`: 设置快捷方式文件的属性,2表示隐藏,4表示系统,这样设置后,这些快捷方式就不会显示...
segments: a.pathname.replace(/^\//,'').split('/') }; } ``` 这个函数会返回一个对象,包含以下属性: 1. `source`: 输入的原始URL。 2. `protocol`: URL的协议,例如`http`或`https`,去掉了冒号。 3. `host`...
集合了 所有的 Unix命令... ln -s file1 file1.sln 创建软链接。可跨系统操作,冲破操作权限;也是快捷方式。 八、时间显示 date 显示时间,精确到秒 用法 date [-u] mmddHHMM[[cc]yy][.SS] date [-u] [+format] ...
path: a.pathname, query: function() { var query = a.search.substr(1); var queryArr = query.split('&'); var queryObj = {}; queryArr.forEach((item, index) => { var itemParts = item.split('='); ...
search_file(ftp.pwd() + "/" + i.split(" ")[-1]) ftp.cwd('..') else: # 如果是文件,统计数量和大小 sum2 += 1 val = i.split(" ")[-1] value += ftp.size(val) # 打印统计结果 print("folder number ...
‘‘,‘ -s[arguments] = split (demultiplex) stream‘,‘ arguments:‘,‘ m[suppression level] = suppress logging‘,‘ o = write old-style file header‘,{ __UNIX__}‘ p<directory prefix> = use specified...