file文件操作的详细方法.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
file文件操作的详细方法

ruby文件操作 转! 1 检测文件是否存在及其大小 FileTest的 exist?方法可以检测一个文件是否存在: 代码: flag = FileTest::exist?(LochNessMonster) flag = FileTest::exists?(UFO) # exists? is a synonym for exist? 如果我们想要知道文件是否有内容,可以使用File::Stat的zero? 方法: 代码: flag = File.new(somefile).stat.zero? 这个将会返回true,这是因为在ruby中0也是true,nil才是false. 所以我们可以使用size?方法: 代码: if File.new(myfile).stat.size? ? puts The file has contents. else ? puts The file is empty. end FileTest模块里面也有zero? 和size?方法: 代码: flag1 = FileTest::zero?(file1) flag2 = FileTest::size?(file2) 这里还有一个size方法: 代码: size1 = File.size(file1) size2 = File.stat(file2).size 2 检测特殊文件属性 这边要注意,File类mix了FIleTest模块,并且FileTest模块和File::Stat模块功能上也有很多重复. unix/linux有面向字符和面向块的设备。FileTest的方法blockdev?和chardev?可以进行测试: 代码: flag1 = FileTest::chardev?(/dev/hdisk0)? # false flag2 = FileTest::blockdev?(/dev/hdisk0) # true 有时我们想要知道一个流是否联系到了终端,这时我们可以使用IO类的tty?方法: 代码: flag1 = STDIN.tty?? ? ? ? ? ? ? ? ? ?# true flag2 = File.new(diskfile).isatty? # false 一个流可以是一个管道,或者一个socket: 代码: flag1 = FileTest::pipe?(myfile) flag2 = FileTest::socket?(myfile) 要区分目录和普通文件我们这样使用: 代码: file1 = File.new(/tmp) file2 = File.new(/tmp/myfile) test1 = file1.directory?? ? ? ? ? # true test2 = file1.file?? ? ? ? ? ? ? ?# false test3 = file2.directory?? ? ? ? ? # false test4 = file2.file?? ? ? ? ? ? ? ?# true File还有一个类方法ftype,他将返回流的类型.他也在File::Stat里面,只不过是实例方法.它的返回值可能是下面的字符 串(file、directory、blockSpecial、characterSpecial、fifo、link或socket). 代码: this_kind = File.ftype(/dev/hdisk0)? ? ?# blockSpecial that_kind = File.new(/tmp).stat.ftype? ?# directory 要测试一个文件是否为另一个文件的链接,可以使用FileTest的symlink?方法,要计算链接数量,可以使用nlink方法: 代码: File.symlink(yourfile,myfile)? ? ? ? ? ?# Make a link is_sym = FileTest::symlink?(myfile)? ? ? ?# true hard_count = File.new(myfile).stat.nlink? # 0 3 使用管道 ruby中使用IO.popen打开管道: 代码: check = IO.popen(spell,r+) check.puts(T was brillig, and the slithy toves) check.puts(Did gyre and gimble in the wabe.) check.close_write list = check.readlines list.collect! { |x| x.chomp } # list

文档评论(0)

80219pm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档