Ruby Tempfile vs File



我想知道TempfileFile的区别。

我发现:

require 'open-uri'
open('c:/boot.ini'){|file|
  puts file.class  #File 
}
open('http://coderlee.cnblogs.com'){|file|
  puts file.class #Tempfile
}

,当我将流保存到远程存储服务器时,Tempfile会导致错误,似乎原因是编码不是ASCII-8BIT为什么?

在第一种情况下,您正在从文件系统加载一个文件。这将创建一个File对象,使用文件名(它有一个)。

在第二种情况下,您正在打开指向远程文件的流。您的文件系统中没有关联的文件,但是如果要对其进行任何操作,则需要一个文件。因此,Ruby为您创建了一个具有唯一文件名的Tempfile,您甚至不需要知道这个文件名(因为资源本身没有名称)。它的行为就像一个File对象。

您检索的文档的编码由服务器控制。如果希望以不同的编码检索文档,则需要更改服务器上的编码。

相关内容

  • 没有找到相关文章

最新更新