ruby文件操作

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1ruby文件操作

关键字:file ruby

转!

1检测文件是否存在及其大小

FileTest的exist?方法可以检测一个文件是否存在:

Ruby代码

1.flag=FileTest::exist?("LochNessMonster")

2.flag=FileTest::exists?("UFO")

3.#exists?is a synonym for exist?

Ruby代码

1.flag=FileTest::exist?("LochNessMonster")

2.flag=FileTest::exists?("UFO")

3.#exists?is a synonym for exist?

如果我们想要知道文件是否有内容,可以使用File::Stat的zero?方法:

Ruby代码

1.flag=File.new("somefile").stat.zero?

Ruby代码

1.flag=File.new("somefile").stat.zero?

这个将会返回true,这是因为在ruby中0也是true,nil才是false.

所以我们可以使用size?方法:

Ruby代码

1.if File.new("myfile").stat.size?

2.puts"The file has contents."

3.else

4.puts"The file is empty."

5.end

1.if File.new("myfile").stat.size?

2.puts"The file has contents."

3.else

4.puts"The file is empty."

5.end

FileTest模块里面也有zero?和size?方法:

Ruby代码

1.flag1=FileTest::zero?("file1")

2.flag2=FileTest::size?("file2")

Ruby代码

1.flag1=FileTest::zero?("file1")

2.flag2=FileTest::size?("file2")

这里还有一个size方法:

Ruby代码

1.size1=File.size("file1")

2.size2=File.stat("file2").size

Ruby代码

1.size1=File.size("file1")

2.size2=File.stat("file2").size

2检测特殊文件属性

这边要注意,File类mix了FIleTest模块,并且FileTest模块和File::Stat 模块功能上也有很多重复.

unix/linux有面向字符和面向块的设备。FileTest的方法blockdev?和chardev?可以进行测试:

1.flag1=FileTest::chardev?("/dev/hdisk0")#false

2.flag2=FileTest::blockdev?("/dev/hdisk0")#true

Ruby代码

1.flag1=FileTest::chardev?("/dev/hdisk0")#false

2.flag2=FileTest::blockdev?("/dev/hdisk0")#true

有时我们想要知道一个流是否联系到了终端,这时我们可以使用IO类的tty?方法:

Ruby代码

1.flag1=STDIN.tty?#true

2.flag2=File.new("diskfile").isatty#false

Ruby代码

1.flag1=STDIN.tty?#true

2.flag2=File.new("diskfile").isatty#false

一个流可以是一个管道,或者一个socket:

Ruby代码

1.flag1=FileTest::pipe?(myfile)

2.flag2=FileTest::socket?(myfile)

Ruby代码

1.flag1=FileTest::pipe?(myfile)

2.flag2=FileTest::socket?(myfile)

要区分目录和普通文件我们这样使用:

Ruby代码

1.file1=File.new("/tmp")

2.file2=File.new("/tmp/myfile")

3.test1=file1.directory?#true

4.test2=file1.file?#false

5.test3=file2.directory?#false

6.test4=file2.file?#true

Ruby代码

1.file1=File.new("/tmp")

2.file2=File.new("/tmp/myfile")

3.test1=file1.directory?#true

4.test2=file1.file?#false

5.test3=file2.directory?#false

6.test4=file2.file?#true

File还有一个类方法ftype,他将返回流的类型.他也在File::Stat里面,只不过是实例方法.它的返回值可能是下面的字符

串(file、directory、blockSpecial、characterSpecial、fifo、link或socket).

Ruby代码

1.this_kind=File.ftype("/dev/hdisk0")#"blockSpecial"

2.that_kind=File.new("/tmp").stat.ftype#"directory"

Ruby代码

1.this_kind=File.ftype("/dev/hdisk0")#"blockSpecial"

2.that_kind=File.new("/tmp").stat.ftype#"directory"

要测试一个文件是否为另一个文件的链接,可以使用FileTest的symlink?方法,要计算链接数量,可以使用nlink方法:

Ruby代码

1.File.symlink("yourfile","myfile")#Make a link

2.is_sym=FileTest::symlink?("myfile")#true

3.hard_count=File.new("myfile").stat.nlink#0

Ruby代码

1.File.symlink("yourfile","myfile")#Make a link

相关文档
最新文档