在这段允许您阅读终端文件的代码中,为什么需要使用open(filename)
而不是filename.open
?
filename = ARGV.first
txt = open(filename)
puts "Here's your file #{filename}:"
print txt.read
print "Type the filename again: "
file_again = $stdin.gets.chomp
txt_again = open(file_again)
print txt_again.read
答案 0 :(得分:2)
答案 1 :(得分:0)
File.open("file")
打开一个本地文件并返回一个文件对象。这里File#open是File类的方法。
open("file")
实际上是Kernel#open并查看字符串以决定如何处理它。
琐碎事情:
File.open("file")
专门告诉Ruby打开一个文件。open("file")
Ruby检查字符串"file"
以确定它是什么类型(这里是一个文件)并打开相应的类型,则会抛出相应的错误。 答案 2 :(得分:0)
Ruby有一个用于以面向对象的方式处理路径的类:Pathname
require 'pathname'
loop do
print 'Enter filename: '
pn = Pathname(gets.chomp)
if pn.file?
puts "Here's your file '#{pn}':", pn.read
elsif pn.exist?
puts 'That is not a file.'
else
puts 'File does not exist.'
end
end