用Ruby打开文件

时间:2019-02-27 16:03:06

标签: ruby

我需要查看文件是否存在,然后如果存在,我想打开该文件并查看其包含的内容。

我有以下方法:

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

第一种方法有效。我无法使用第二种方法打开文件。问题在于,即使文件存在,因为我在第二种方法中记得第一种方法,它也不会打开文件。

你能帮我吗?

1 个答案:

答案 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