Ruby File.open 没有创建文件
Ruby File.open not creating file
我正在尝试使用
创建并写入新文件
@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('\','/')
这里还需要双反斜杠,'和\需要用单引号转义。
另一个与问题无关但非常方便的提示:使用块方法打开文件,以便在文件关闭时一目了然,参见此示例
File.open(path, 'w') do |file|
file.puts "Hello"
end
文件结束后关闭
不过,对于日志记录,请查看 logger,一旦使用它就不会停止使用它。
您应该始终使用 path = File.join("C:","Program Files","Blah")
确保它适用于任何架构。
我正在尝试使用
创建并写入新文件@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('\','/')
这里还需要双反斜杠,'和\需要用单引号转义。
另一个与问题无关但非常方便的提示:使用块方法打开文件,以便在文件关闭时一目了然,参见此示例
File.open(path, 'w') do |file|
file.puts "Hello"
end
文件结束后关闭
不过,对于日志记录,请查看 logger,一旦使用它就不会停止使用它。
您应该始终使用 path = File.join("C:","Program Files","Blah")
确保它适用于任何架构。