ruby:无法创建新文件

时间:2015-06-29 17:40:53

标签: ruby file-io

我有一个命令行程序,它向用户询问一组问题并将它们存储在一个文件中。唯一的问题是,我需要它来创建一个新文件而不会。

以下是我的尝试: File.open("path/to/file", "w")
File.open("path/to/file", "w+")

两次我都收到此错误 in 'initialize': No such file or directory @ rb_sysopen - path/to/file (Errno::ENOENT)

这是我目前的代码:
File.open("path/to/file", "w") { |f| f.write(array.join("\n")) }

2 个答案:

答案 0 :(得分:3)

当有人在博文或文档中写path/to/file时,他们并不打算在您的代码中字面编写path/to/file。关键是你需要编辑该字符串以实际拥有文件的真实路径,作为相对路径或绝对路径。

你说你从Ruby解释器那里得到了这个错误:

  

没有这样的文件或目录@ rb_sysopen - path / to / file(Errno :: ENOENT)

这意味着在当前的工作目录中,没有名为" path"的目录,或者如果有一个名为" path"的目录,那么它没有名为"到"。

的子目录

您可以通过运行mkdir -p path/to来解决当前问题,但这很奇怪。最好在代码中编写适当的路径,指向已存在的目录。尝试将路径更改为output.txt(不带任何斜杠),看看它是如何工作的。

答案 1 :(得分:0)

确保使用绝对路径,如果是,请确保缺少要存储文件的目录。首先尝试创建它:

require 'fileutils'
FileUtils.mkdir_p '/path/to'
File.open('/path/to/file', 'w') { ... }