Ruby语言基础学习十:Ruby文件输入输出

# Ruby 文件的输入与输出 ,本文参考http://www.runoob.com/ruby/ruby-input-output.html
# gets 语句可用于获取来自名为 STDIN 的标准屏幕的用户输入。
puts "Enter a value :"
#下面有一个严重的我问题,留在这里,就是gets创建后没反应,苦恼中···
# name=gets
# puts name


# 打开和关闭文件
# 您可以使用 File.new 方法创建一个 File 对象用于读取、写入或者读写,读写权限取决于 mode 参数。
# 最后,您可以使用 File.close 方法来关闭该文件。

# 您可以使用 File.open 方法创建一个新的 file 对象,并把该 file 对象赋值
# 给文件。但是,File.open 和 File.new 方法之间有一点不同。不同点
# 是 File.open 方法可与块关联,而 File.new 方法不能。


# 读取和写入文件
# sysread 方法
# 您可以使用方法 sysread 来读取文件的内容。当使用方法 sysread 时,您可以使用任意一种模式打开文件。

#建立一个input.txt文件并写入:This is a simple text file for testing purpose.
aFile=File.new("input.txt","r") #只读模式打开
if aFile #如果afile 不是nil
	content=aFile.sysread(20) #从文件中读取20个字
	puts content
else
	puts "Unable to open file"
end
aFile.close

# syswrite 方法
aFile=File.new("input.txt","r+") #读写模式,可以从头写入,并且只是掩盖前面已有的若干字母
if aFile
	aFile.syswrite("ABCDEF") 
	aFile.rewind
	aFile.each_byte{|ch| putc ch;putc ?.} #这里还有一个正则表达式呢!
else
	puts "Unable to open file !"
end
aFile.close

# IO.readlines 方法
arr=IO.readlines("input.txt")
puts "this is"
puts arr[0]
puts arr[1]

# IO.foreach 方法,逐行显示
IO.foreach("input.txt") {|block| puts block}

# 重命名和删除文件
# 重命名文件 test1.txt 为 test2.txt

#在文件夹中创建test1.txt,
#File.rename("test1.txt","test2.txt")

#删除一个已存在文件 test2.txt
#File.delete("test2.txt")

# 文件模式与所有权
# 使用带有掩码的 chmod 方法来改变文件的模式或权限/访问列表
# file=File.new("input.txt","w")
# file.chmod(0700) #rwx 掩码,针对所有者
# file.close

# 下面的命令在打开文件前检查文件是否已存在
File.open("input.txt") if File::exists?("input.txt")

# 下面的命令查询文件是否确实是一个文件
# 返回 true 或false
# 返回 true 或false
puts File.file?( "text.txt" ) 

# 下面的命令检查给定的文件名是否是一个目录
# 一个目录
puts File::directory?("D:\\Media")
#一个文件
puts File::directory?("input.txt")

# 下面的命令检查文件是否可读、可写、可执行:
puts File.readable?( "input.txt" )   # => true
puts File.writable?( "input.txt" )   # => true
puts File.executable?( "input.txt" ) # => false

# 下面的命令检查文件是否大小为零
puts "this"
puts File.zero?( "input.txt" ) 

# 下面的命令返回文件的大小
puts File.size?( "input.txt" )

# 下面的命令用于检查文件的类型
puts File::ftype( "input.txt" )   # => file

# 下面的命令用于检查文件被创建、修改或最后访问的时间:
puts File::ctime( "input.txt" ) 
puts File::mtime( "input.txt" ) 
puts File::atime( "input.txt" ) 

# Ruby 中的目录
# 为了在 Ruby 程序中改变目录,请使用 Dir.chdir。
Dir.chdir("D:\\Media")

#您可以通过 Dir.pwd 查看当前目录
puts Dir.pwd

# 可以使用 Dir.entries 获取指定目录内的文件和目录列表
puts Dir.entries("D://KuGou").join(' ')

# Dir.entries 返回一个数组,包含指定目录内的所有项。Dir.foreach 提供了相同的功能
Dir.foreach("D://KuGou") do |entry|
	puts entry
end

# 获取目录列表的一个更简洁的方式是通过使用 Dir 的类数组的方法
puts "this"
puts Dir["D://KuGou//*"]

# 创建目录,这个是在当前目录下创建的
# Dir.mkdir("mynewdir")

# 您也可以通过 mkdir 在新目录(不是已存在的目录)上设置权限:

# 注意:掩码 755 设置所有者(owner)、所属组(group)、每个人(world [anyone])的权限为 rwxr-xr-x,其中 r = read 读取,w = write 写入,x = execute 执行。

if Dir.exists?("mynewdir2") then Dir.mkdir("mynewdir2",755) end

# 删除目录
# Dir.delete 可用于删除目录。Dir.unlink 和 Dir.rmdir 执行同样的功能,为我们提供了便利。
# if false==Dir.exists?("mynewdir") then Dir.delete("mynewdir") end


# 创建文件 & 临时目录
# 可以把 Dir.tmpdir 和 File.join 一起使用,来创建一个独立于平台的临时文件
require 'tmpdir'
   tempfilename = File.join(Dir.tmpdir, "tingtong")
   tempfile = File.new(tempfilename, "w")
   tempfile.puts "This is a temporary file"
   tempfile.close
   File.delete(tempfilename)
# 这段代码创建了一个临时文件,并向其中写入数据,然后删除文件。Ruby 的标准库也包含了一个名为 Tempfile 的库,该库可用于创建临时文件:
require 'tempfile'
   f = Tempfile.new('tingtong')
   f.puts "Hello"
   puts f.path
   f.close

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值