我正在尝试创建一个新文件,事情似乎并不像我期望的那样工作。以下是我的尝试:

File.new "out.txt"
File.open "out.txt"
File.new "out.txt","w"
File.open "out.txt","w"

根据我在网上读到的所有东西,所有这些都应该有用,但每一个都给了我这个:

ERRNO::ENOENT: No such file or directory - out.txt

这可以从IRB和Ruby脚本中实现。我错过了什么?


当前回答

好吧,现在我觉得自己很蠢。前两个肯定不行,但后两个可以。不知道我是怎么说服自己我已经试过了。抱歉浪费了大家的时间。

为了帮助其他人,当您试图在不存在的目录中创建新文件时,可能会发生这种情况。

其他回答

还可以使用常量而不是字符串来指定所需的模式。这样做的好处是,如果在常量名中出现拼写错误,程序将引发运行时异常。

常量为File::RDONLY或File::WRONLY或File::CREAT。如果你喜欢,你也可以把它们结合起来。

ruby-doc.org上文件打开模式的完整描述

试着用“w+”而不是“w”作为写模式:

File.open("out.txt", "w+") { |file| file.write("boo!") }

Try

File.open("out.txt", "w") do |f|     
  f.write(data_you_want_to_write)   
end

不使用

File.new "out.txt"

好吧,现在我觉得自己很蠢。前两个肯定不行,但后两个可以。不知道我是怎么说服自己我已经试过了。抱歉浪费了大家的时间。

为了帮助其他人,当您试图在不存在的目录中创建新文件时,可能会发生这种情况。

目录不存在。确保它以开放的方式存在不会给你带来脏东西。

我之前也碰到过这种事。