我正在尝试使用
@logFile = File.open("C:\Users\---\Desktop\mylog.log", "w+")
什么也没发生。我的程序使用
@logFile.write ("Hello")
@logFile.flush
这条线路运行正常(没有撞车或其他情况)
但我看不到任何新创建的文件。
我错过了什么?
最佳答案
反斜杠是转义的,在用双引号括起来的字符串中,您需要将它们加倍,或者只使用unix表示法。
所以"C:\\Users\\---\\Desktop\\mylog.log"
或"C:/Users/---/Desktop/mylog.log"
或'C:\Users\---\Desktop\mylog.log'
ruby中的路径在unix表示法中是最安全的,因此即使使用反斜杠以便于复制,也最好将它们转换为unix格式。
像这样'C:\Users\---\Desktop\mylog.log'.gsub('\\','/')
这里还需要双反斜杠,'和\需要用单引号转义。
另一个与这个问题无关但非常方便的提示是:使用block方法打开一个文件,这样当文件关闭时就很清楚了,请参见这个例子
File.open(path, 'w') do |file|
file.puts "Hello"
end
文件在结束后关闭。
不过,对于日志记录,请查看logger,一旦使用它,就不会停止使用它。