【发布时间】:2010-09-20 18:47:21
【问题描述】:
我知道有其他语言的库可以采用包含本地文件路径或 url 的字符串并将其作为可读 IO 流打开。
在 ruby 中是否有一种简单的方法可以做到这一点?
【问题讨论】:
我知道有其他语言的库可以采用包含本地文件路径或 url 的字符串并将其作为可读 IO 流打开。
在 ruby 中是否有一种简单的方法可以做到这一点?
【问题讨论】:
open-uri 是标准 Ruby 库的一部分,它将重新定义 open 的行为,以便您可以打开 url 以及本地文件。它返回一个File 对象,因此您应该能够调用read 和readlines 之类的方法。
require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents = open('http://www.stackoverflow.com') {|f| f.read }
【讨论】:
content = open("http://example.com").read
open-uri 不会流式传输文件,因此您无法读取文件的前 4k。 open-uri 将在打开时将整个文件读入内存。
URI.parse('http://www.stackoverflow.com').open { |f| f.read } 如果您正在寻找一种方法来确保它不会调用Kernal.open。还可以绕过 rubocop 安全规则。