2009年1月31日星期六

Nebula3 IO子系统:URIs和Assigns

Nebula3使用URIs(统一资源标示)代替简单的文件名称来定位IO资源。URI对象的创建方式如下:

using namespace IO;
URI webUri("http://www.myhttpserver.com/index.html");
URI localUri("file:///c:/temp/text.txt");

第一个URI指向一个在HTTP服务器上的文件,第二个URI指向一个在本地文件系统的文件。当一个URI对象被创建后,将被拆分成几个部分:

* the scheme (for instance "http", or "file")
* the host ("www.myhttpserver.com")
* the local path ("index.html", or "c:/temp/text.txt")

URIs一般还包含一些额外的信息:

* user info: describes login information for a secure service
* port number: describes a network port number
* fragment: usually describes a location inside an HTML file
* query: a set of key/value pairs often used by web services

Nebula3已经内置支持了“file:”和“http:”,在不久的将来也计划支持“ftp:”。

例子:从http服务器上拷贝一个文件到本地:

URI from("http://www.radonlabs.de/index.html");
URI to("file:///c:/temp/index.html");
IO::Server::Instance()->CopyFile(from, to);

Assigns在Nebula1中就已经存在了,它是文件系统位置的一个别名(或快捷方式),在一个Nebula应用程序中可以很方便抽象文件的位置。

例如,你可以很简单使用“textures:mycategory/mytexture.dds”来代替“C:/ProgramFiles/MyApp/export/textures/category/mytexture.dds”。这个“textures:”将被定义为“C:/Programme/MyApp/export/textures”。

Assigns在说明应用程序安装目录或者当前登陆用户的目录的位置时特别有用。由于这个原因,Nebula3在程序启动的时候定义了几个标准的Assigns:

home: 指向应用程序安装目录。
bin: 指向应用程序可执行文件目录。
temp: 指向一个当前用户可读可写的临时文件目录。
user: 指向登陆用户目录。在英文操作系统中,该目录的位置是“My Files/CompanyName /AppName”。该目录必需保证是可写的,因为该目录将存放配置信息或者是游戏存档。

在Nebula3中,Assigns扩展了URIs的功能。例如,“textures:”可以被定义为
“http://www.radonlabs.de/myapp/textures”,那么在加载纹理的时候就会自动地从http服务器上获取而不是本地文件系统。Assign能被内嵌,因此“textures:”可以被定义为“home:export/texutres”,在使用的时候就自动转化为安装目录下的“export/textures”目录。

原文:The Nebula3 IO subsystem: URIs and Assigns

[声明]:限于译者水平,文中难免错漏之处,欢迎各位网友批评指正;

没有评论:

发表评论