Ruby:为什么我不能创建新文件?

use*_*603 2 ruby

我正在尝试创建一个json文件并写入它.

我的代码看起来像这样:

def save_as_json(object)
    f = File.new('file.json')
    f.puts(object.to_json, 'w')
    f.close
end

save_as_json({'name'=>'fred'})
Run Code Online (Sandbox Code Playgroud)

问题是,运行时出现以下错误:

:15:in `initialize': No such file or directory @ rb_sysopen - file.json (Errno::ENOENT)
Run Code Online (Sandbox Code Playgroud)

我要求Ruby创建该文件,但它抱怨它不存在!创建和写入文件的正确方法是什么?

Ant*_*ony 5

您只需要使用'w'模式打开文件,如下所示:

f = File.new('file.json', 'w')
Run Code Online (Sandbox Code Playgroud)

您希望根据计划对文件执行的操作来确定模式,但以下是您的选择:

"r"只读,从文件开头(默认模式)开始.

"r +"读写,从文件开头开始.

"w"只写,将现​​有文件截断为零长度或创建用于写入的新文件.

"w +"读写,将现有文件截断为零长度或创建用于读写的新文件.

"a"只写,每次写入调用都会在文件末尾附加数据.如果文件不存在,则创建用于写入的新文件.

"a +"读写,每次写调用都会在文件末尾附加数据.如果文件不存在,则创建用于读写的新文件.

IO Docs