文字列の配列がある場合.
a = ['a', 'b', 'c', 'd']
そして、要素を1行に1ファイル(.txtなど)に出力したいと思います。これまでのところ:
File.new("test.txt", "w+")
File.open("test.txt", "w+") do |i|
i.write(a)
end
これにより、test.txtファイルの1行に配列が表示されます。配列を反復処理して、各値をファイルの新しい行に追加するにはどうすればよいですか?
Array#each
配列を反復処理して IO#puts
は、各要素をファイルに書き込みます(puts
はレコード区切り文字、通常は改行文字を追加します):
File.open("test.txt", "w+") do |f|
a.each { |element| f.puts(element) }
end
または、配列全体をputs
に渡します。
File.open("test.txt", "w+") do |f|
f.puts(a)
end
ドキュメントから:
配列引数で呼び出された場合、各要素を新しい行に書き込みます。
非常に簡単な解決策があります:
IO.write("file_name.txt", your_array.join("\n"))
別の方法として、次のように各要素が新しい行にあるように、単純に配列を「\ n」で結合することができます。
a = %w(a b c d)
File.open('test.txt', 'w') {|f| f.write a.join("\n")}
テキストファイルに既にある値を上書きしたくない場合は、新しい情報を最後に追加するだけです。これを行うことができます。
a = %w(a b c d)
File.open('test.txt', 'a') {|f| f << "\n#{a.join("\n")}"}
つかいます - Array#each
各要素を反復します。ファイルに書き込むときは、必ず改行(\n
)、またはコンテンツとしてabcd
を含むファイルを取得します:
a = ['a', 'b', 'c', 'd']
File.open('test.txt', 'w') do |f|
a.each do |ch|
f.write("#{ch}\n")
end
end
別の簡単なソリューション:
directory = "#{Rails.root}/public/your_directory" #create your_directory before
file_name = "your_file.txt"
path = File.join(directory, file_name)
File.open(path, "wb") { |f| f.write(your_array.join("\n")) }