读取和写入文件 - 你能以同样的方式做到吗? (红宝石)

时间:2014-03-19 23:27:27

标签: ruby

我正在学习Ruby并阅读Chris Pine的书。我正在学习如何阅读(和写入)文件,并且遇到了这个例子:

require 'yaml' 
test_array = ['Give Quiche A Chance',
              'Mutants Out!',
              'Chameleonic Life-Forms, No Thanks']

test_string = test_array.to_yaml

filename = 'whatever.txt'

File.open filename, 'w' do |f|
f.write test_string
end

read_string = File.read filename

read_array = YAML::load read_string
puts(read_string == test_string)
puts(read_array == test_array )

示例的目的是教我关于YAML,但我的问题是,如果你能阅读文件:

File.read filename 

你能以类似的方式写一个文件吗?:

File.write filename test_string

对不起,如果这是一个愚蠢的问题。我只是好奇它为什么写它的方式,如果它必须这样写。

3 个答案:

答案 0 :(得分:1)

  

你能以类似的方式写一个文件吗?

实际上,是的。它与您猜测的完全一样:

File.write 'whatever.txt', test_array.to_yaml

我认为Ruby的直观性令人惊讶。

有关详细信息,请参阅IO.write。请注意,IO.binwrite也可用,IO.readIO.binread

答案 1 :(得分:0)

Ruby File类将为您提供newopen,但它继承自IO类,因此您也可以获得readwrite方法。

我认为写入文件的正确方法如下:

File.open(yourfile, 'w') { |file| file.write("your text") }

要制止这条线:

  • 我们首先打开设置访问模式的文件('w'覆盖,'a'追加等)

  • 然后我们实际写入文件

答案 2 :(得分:0)

您可以通过指定访问它的模式来读取或写入文件。 Ruby File类是IO的子类。

File类打开或新方法将路径和模式作为参数: File.open('path','mode')或者:File.new('path','mode')

示例:写入现有文件     somefile = File.open('。/ dir / subdirectory / file.txt','w')       ##写入文件的一些代码,例如:       array_of_links.each {| link | somefile.puts link}     somefile.close

有关详细信息,请参阅上面建议的源文档或类似问题:How to write to file in Ruby?