我正在学习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
对不起,如果这是一个愚蠢的问题。我只是好奇它为什么写它的方式,如果它必须这样写。
答案 0 :(得分:1)
你能以类似的方式写一个文件吗?
实际上,是的。它与您猜测的完全一样:
File.write 'whatever.txt', test_array.to_yaml
我认为Ruby的直观性令人惊讶。
有关详细信息,请参阅IO.write
。请注意,IO.binwrite
也可用,IO.read
和IO.binread
。
答案 1 :(得分:0)
Ruby File类将为您提供new
和open
,但它继承自IO类,因此您也可以获得read
和write
方法。
我认为写入文件的正确方法如下:
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?