不确定这里会发生什么,或者在这种情况下可能是整数。这是代码:
def build_array_from_file(filename)
contents = []
File.read(File.expand_path('lib/project_euler/' + filename), 'r') do |file|
while line = file.get
contents << line
end
end
contents
end
filename是一个字符串,我已经检查过以确保路径有效。
有什么想法?感谢。
答案 0 :(得分:7)
File.read没有模式或阻止的第二个参数,即File.open:
contents_string = File.read(File.expand_path('lib/project_euler/' + filename))
请注意,您也可以写:
contents = File.open(path).lines # returns a lazy enumerator, keeps the file open
或者:
contents = File.readlines(path) # returns an array, the file is closed.
答案 1 :(得分:1)
File.read
不需要r
模式 - 您已经请求&#39;阅读&#39;在File.read
。参数fo File.read
是 - 在文件名之后 - 偏移量和长度(这是错误消息中预期整数的原因)。
您可以将模式设为File.read(filename, :mode => 'r')
如果您需要模式rb
或r:utf-8
(但还有encoding
- 选项),这可能会很有用。