编写内容的简单方法是:
content = 'stuff to write'
File.write('text.txt', content)
这将用新内容覆盖文件。
一种更复杂的方式,可以更好地控制文件内容(无论是文本还是二进制),就是使用:
File.open('text.txt', 'w') do |fo|
fo.write(content)
end
这也可以实现相同的功能。文件模式
w
告诉Ruby进行写操作。
wb
会告诉Ruby进行二进制内容写入。区别在于在写入文件时如何处理/翻译行尾。与许多其他语言一样,Ruby知道Windows期望不同于*nix系统的行尾,并在写文本时进行相应调整。使用“二进制”模式不会进行行尾翻译。
在块内,
fo
变量是一个文件句柄,因此您可以使用它以及
write
、
print
或
puts
将内容发送到文件中。它们的行为略有不同,但总体上,对于您的目的,它们将执行相同的操作。
使用
open
块告诉Ruby在块退出时关闭文件。始终尽可能短地打开和关闭文件。操作系统可用的文件句柄数量有限,保持它们处于打开状态可能会不必要地使用它们,因此其他应用程序无法使用它们。
您需要了解操作系统如何指定资源/文件的路径。
'text.txt'
与'./text.txt'
相同,这意味着它在当前目录中。
使用'../text.txt'
表示它在上一级目录,'..'
表示相对路径。同样,'subdir/text.txt'
意味着"text.txt"在子目录中。
使用'/path/to/text.txt'
表示它是一个绝对路径,从磁盘的根目录开始,您需要查看'path'
文件夹,然后进入其'to'
子文件夹,就可以在那里找到"text.txt"。
这些都在IO类文档中有详细介绍。(还有,在你问之前,File继承自IO,所以在File类中自动拥有IO中可用的所有内容。)
puts
只是因为\n
吗?还是有其他原因?我的意思不是write
而是puts
。谢谢。 - user2107733File.write
。 - Marc-André Lafortune