我需要查看文件是否存在,然后如果存在,我想打开该文件并查看其包含的内容。
我有以下方法:
def Utility.exist_request_xml(filexml)
puts("exist_request_xml")
if(File.exist?("#{PATH_WEBSERVICES_REQUEST}/#{filexml}"))
puts 'file exists'
puts(File.exist?("#{PATH_WEBSERVICES_REQUEST}/#{filexml}"))
else
puts 'file not exist'
end
end
def Utility.open_request_xml(filexml)
puts("open_request_xml")
if(Utility.exist_request_xml(filexml))
f=File.open("#{PATH_WEBSERVICES_REQUEST}/#{filexml}","r")
f.each_line do |line|
puts line
end
else
puts 'there is no file to open'
end
end
第一种方法有效。我无法使用第二种方法打开文件。问题在于,即使文件存在,因为我在第二种方法中记得第一种方法,它也不会打开文件。
你能帮我吗?
答案 0 :(得分:6)
您的Utility.exist_request_xml
方法返回nil
,这在if
语句中是错误的,因此它会进入您未打开文件的其他地方。
它返回nil
,因为默认情况下,最后一个求值表达式是返回值,而您的最后一个表达式是if。同样,if的返回值是 it 计算的最后一个值,即puts
(在任一分支中)。 puts
返回nil
。
相反,返回存在性检查的值:
def Utility.exist_request_xml filexml
File.exist? "#{PATH_WEBSERVICES_REQUEST}/#{filexml}"
end