当前位置:  开发笔记 > 后端 > 正文

从本地文件或URL打开IO流

如何解决《从本地文件或URL打开IO流》经验,为你挑选了1个好方法。

我知道其他语言中的库可以采用包含本地文件路径或URL的字符串,并将其作为可读IO流打开.

在ruby中有一个简单的方法吗?



1> Aaron Hinni..:

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 }


请注意,`open-uri`不会**流**文件,所以你不能读取它的前4k.`open-uri`会在打开时将一个**整个**文件读入内存.
知道现在有点老了,但你也可以这样做:`content = open("http://example.com").read`
你可以,但在闭包之外这样做会使文件描述符保持打开状态.这可能是某些用法的问题.
`URI.parse('http://www.stackoverflow.com').open {| f | f.read}`如果你想找到一种方法来确保它不会调用`Kernal.open`.还可以了解rubocop安全规则.
有没有办法像ActionMailer附件一样返回文件对象?
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有