Ruby File.open没有创建文件

时间:2017-01-19 12:36:21

标签: ruby file io writetofile

我正在尝试使用

创建并写入新文件
@logFile = File.open("C:\Users\---\Desktop\mylog.log", "w+")

没有任何反应。我的程序使用

  @logFile.write ("Hello")
  @logFile.flush

这条线似乎运行正常(没有崩溃或任何事情) 但我看不到任何新创建的文件。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

  1. 您的反斜杠被转义,用双引号括起来的字符串需要加倍,或者只使用Unix表示法。 所以"C:\\Users\\---\\Desktop\\mylog.log"
  2. "C:/Users/---/Desktop/mylog.log"

    'C:\Users\---\Desktop\mylog.log'

    1. Ruby中的路径在Unix表示法中是最安全的,因此即使使用反斜杠来简化复制,最好将它们转换为Unix格式。
    2. 喜欢这个'C:\Users\---\Desktop\mylog.log'.gsub('\\','/')

      此处还需要双反斜杠,'和\需要使用单引号进行转义。

      另一个提示与问题无关,但非常方便:使用块方法打开文件,以便在文件关闭时清楚,请参阅此示例

      File.open(path, 'w') do |file|
        file.puts "Hello"
      end
      

      文件在结束后关闭。

      要进行记录,请查看logger,一旦使用它,您就不会停止使用它。

答案 1 :(得分:-1)

您应始终使用path = File.join("C:","Program Files","Blah") 确保它适用于任何架构。