将本地文件的内容读入Rails中的变量

Ste*_*ven 74 ruby ruby-on-rails

我想要做的就是从本地文件中获取所有内容并将其存储在变量中.怎么样?

File.read(@icon.full_filename).each {|l| r += l}

只给了我一部分.在PHP中,我刚刚使用过file_get_contents.

zed*_*xff 140

data = File.read("/path/to/file")
Run Code Online (Sandbox Code Playgroud)

  • 这不是让文件打开吗? (4认同)
  • 要解决@TomRossi的问题-不,这不会使文件保持打开状态。在File类上调用read可以打开,读取和关闭文件。但是,对文件实例(必须先打开)调用read不会将其关闭。此处调用的方法是https://ruby-doc.org/core-2.5.0/IO.html#method-c-read,而不是https://ruby-doc.org/core-2.5.0/ IO.html#method-i-read (2认同)

Ste*_*ven 14

在这里回答我自己的问题...原来这是一个Windows唯一的怪癖,当读取打开或File.open函数调用中需要额外标志的二进制文件(在我的情况下是JPEG)时发生.我修改了它open("/path/to/file", 'rb') {|io| a = a + io.read},一切都很好.

  • 除非你真的串联一堆文件一起,我只是写为:`数据= File.open("文件","RB"){| IO | io.read}` (9认同)

小智 13

我认为你应该考虑使用,IO.binread("/path/to/file")如果你有一个最近的ruby解释器(即> = 1.9.2)

您可以IOhttp://www.ruby-doc.org/core-2.1.2/IO.html找到课程文档

  • 这个更短,并为您关闭文件. (2认同)