Ruby File.open 不创建文件

标签 ruby file io writetofile

我正在尝试使用

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

什么也没有发生。我的程序使用

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

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

我在这里错过了什么?

最佳答案

  1. 你的反斜杠被转义了,在一个用双引号括起来的字符串中你需要将它们加倍,或者只使用 Unix 符号。 所以 "C:\\Users\\---\\Desktop\\mylog.log"

“C:/Users/---/Desktop/mylog.log”

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

  1. Ruby 中的路径在 Unix 表示法中是最安全的,因此即使您使用反斜杠以便于复制,您也最好将它们转换为 Unix 格式。

像这样 'C:\Users\---\Desktop\mylog.log'.gsub('\\','/')

这里还需要双反斜杠,'和\需要用单引号转义。

另一个与问题无关但非常方便的提示:使用 block 方法打开文件,以便在文件关闭时一目了然,参见此示例

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

文件结束后关闭。

不过,对于日志记录,请查看 logger ,用过就停不下来。

关于Ruby File.open 不创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41741973/

相关文章:

file - 试图隐藏 .htaccess 文件

java - 将字符串写入输出流

ruby-on-rails - 类 Rails 路由框架

ruby-on-rails - 语法错误,意外的 tIDENTIFIER,需要 ';' 或 '\n'

Ruby 打包器生成二进制文件

用于下载私有(private)谷歌文档的 Ruby 脚本

java - 使用多个扫描仪时找不到文件

perl - 如何比较两个文本文件并删除匹配的内容并传递到 perl 中的输出?

io - 如何在Kotlin中获取不带扩展名的文件名

NetBeans 中的 Java 相对路径