青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

IO子系統(tǒng)

Nebula3的IO系統(tǒng)相對(duì)于Nebula1和2是一個(gè)巨大的進(jìn)步, 新系統(tǒng)的主要設(shè)計(jì)目標(biāo)有:

  • 使用更標(biāo)準(zhǔn)的機(jī)制, 如用URI來(lái)定位資源, 用MIME類型來(lái)區(qū)分?jǐn)?shù)據(jù)格式
  • 一個(gè)靈活的流模型, 它不關(guān)心數(shù)據(jù)是來(lái)自文件, 內(nèi)存, HTTP連接還是其它地方
  • 從流讀寫不數(shù)據(jù)的數(shù)據(jù)類型也更方便, 例如要讀取的XML格式數(shù)據(jù)來(lái)自文件/內(nèi)存/網(wǎng)絡(luò)都沒(méi)問(wèn)題
  • 另外, 新的流和讀寫類可以在運(yùn)行時(shí)注冊(cè)到IO系統(tǒng)中
  • 相對(duì)于系統(tǒng)平臺(tái)的特定IO函數(shù), 像fopen()這樣的C Lib函數(shù)會(huì)有額外的性能或內(nèi)存損失. 所以在保證可移植性的前提下不損失性能, 必須使用特定平臺(tái)的IO函數(shù)

IO子系統(tǒng)的一些主要概念:

  • 一個(gè)中樞的IO::Console 對(duì)象連接控制臺(tái)處理器(console handler)來(lái)進(jìn)行文本的輸入和輸出. 這保證了所有的Nebula3的文本輸出都通過(guò)一個(gè)集中的進(jìn)出通道. 特定的控制臺(tái)處理器可以用特定的方式處理文本輸出(例如輸出到stdout, 游戲控制臺(tái), 日志文件或網(wǎng)絡(luò)連接).
  • 重定向符做為路徑別名. 大體的功能跟Nebula1和2差不多, 除了從AmigaOS 的重定向符得到的靈感. Nebula3重定向符的一個(gè)新特性就是它們可以做為URI的別名. 例如, 重定向符”textures:”可以定義為 "http://www.radonlabs.de/textures", 這樣簡(jiǎn)化的資源路徑"textures:mytexture.dds"就會(huì)解釋成這個(gè)絕對(duì)路徑: "http://www.radonlabs.de/textures/mytexture.dds" (太NB了, 把紋理放到網(wǎng)站上加載? 哈哈, 拿來(lái)做內(nèi)置廣告肯定很爽)
  • 流(Stream)做為基本的數(shù)據(jù)進(jìn)出通道. 它提供了基本的API函數(shù) Open()/Close()/Read()/Write(), 但是可能完全隱藏了傳輸和存儲(chǔ)通道. 典型的例子有IO::FileStream, IO::MemoryStream, 或 Net::HttpStream
  • Stream reader 和 writer 是連接到流上并且實(shí)現(xiàn)了簡(jiǎn)單易用的接口來(lái)讀寫數(shù)據(jù)格式. 例如你可以把IO::XmlReader連接到IO::FileStream來(lái)從文件系統(tǒng)讀取XML格式的數(shù)據(jù), 或者連接到IO::HttpStream來(lái)從HTTP連接讀取XML格式的數(shù)據(jù).

這里有個(gè)很好的代碼例子可以反映出Nebula3輸入輸出系統(tǒng)的強(qiáng)大:

1: IO::FileServer::Instance()->CopyFile("http://www.radonlabs.de/index.html", "temp:index.html");

這一行代碼從HTTP服務(wù)器拷貝了一個(gè)文件到當(dāng)用戶的臨時(shí)目錄里去. 再多加幾行代碼, 你可以創(chuàng)建一個(gè)流對(duì)象指向HTTP服務(wù)器上的HTML文件, 連接一個(gè)XML reader到這個(gè)流上, 然后就可以在不存儲(chǔ)中間文件的基礎(chǔ)上進(jìn)行解析HTML了.

標(biāo)準(zhǔn)重定向符

Nebula3初始化了以下幾個(gè)重定向符:

  • home: 指向應(yīng)用程序目錄, 一般在” C:\Program Files “下. Nebula3把這個(gè)目錄當(dāng)成只讀的, 為的是不需要管理員權(quán)限就能運(yùn)行.
  • user: 這個(gè)指向當(dāng)前登錄的用戶目錄, 一般是指” C:\Documents and Settings\[username] “. Nebula3會(huì)自動(dòng)創(chuàng)建一個(gè)本地目錄來(lái)避免不同程序覆寫掉它們的數(shù)據(jù). 所以說(shuō)一般情況下把數(shù)據(jù)寫入用戶目錄是安全的. 這個(gè)地方可以用于保存游戲數(shù)據(jù)和配置, 或者程序需要調(diào)用的持久性數(shù)據(jù).
  • temp: 這個(gè)指向當(dāng)前用戶的臨時(shí)目錄, 一般是可寫的, 但是不要假設(shè)下一次啟動(dòng)程序時(shí)數(shù)據(jù)還存在.
  • bin: 這個(gè)指向應(yīng)用程序可執(zhí)行文件的目錄. 它可以跟home相同, 也可能不同. 這個(gè)目錄應(yīng)該也當(dāng)成是只讀的來(lái)對(duì)待.

其它重定向符可以在程序運(yùn)行時(shí)進(jìn)行定義. 通常情況下會(huì)定義一些抽象資源路徑, 如textuers, sound, data等等. 這樣的話資源的路徑就可以只更改重定向符的定義而是不是去替換所有的路徑. 重定向符的另一個(gè)好處就是減少了路徑字符串的長(zhǎng)度, 在一定程序上節(jié)省了內(nèi)存占用.

URI(統(tǒng)一資源定位符)

在Nebula3中的資源位置通常都是用URI定義的. URI一般包括下面這幾部, 有一些是可選的:

  • 模式(協(xié)議?), 如"http:", "file:", 等... Nebula3 沒(méi)有硬編碼任何模式, 而跟流類綁定在一起注冊(cè)到IO::StreamServer 單件
  • 一個(gè)可選的用戶信息字段, 這是一個(gè)用戶名和密碼用于HTTP或FTP主機(jī)的身份驗(yàn)證
  • 一個(gè)主機(jī)名, 如"www.radonlabs.de"
  • 一個(gè)在主機(jī)名后可選的端口號(hào)
  • 一個(gè)本地路徑, 指向主機(jī)上的一個(gè)資源
  • 一個(gè)可選的片段, 通常指向資源內(nèi)部的一個(gè)位置
  • 一個(gè)可選的查詢部分, 一般包含一個(gè)PHP腳本或其它相似的動(dòng)態(tài)響應(yīng)機(jī)制的參數(shù)

IO::URI類用來(lái)傳遞URI并且解析URI字符串到它的各個(gè)部分中. 值得注意的是URI對(duì)象比字符串占用更多的內(nèi)存, 所以有時(shí)把URI保存在字符串中, 并在需要分割的時(shí)候才使用IO::URI類會(huì)更好一些.

這里有一些URI的例子:

1: file:///c:/temp/bla.txt

2: file://samba/temp/bla.txt

3: http://www.radonlabs.de/index.html

4: http://user:password@www.myserver.com:8080/index.html#main

通過(guò)使用重定位符會(huì)大大簡(jiǎn)化路徑名稱. 要引用一個(gè)程序目錄的文件你可以使用”home:bla.txt”, 等價(jià)于file:///c:/Program Files/[myapp]/bla.txt.

Stream, Reader 和 Writer

流(Stream)提供了用于儲(chǔ)存和傳輸原始數(shù)據(jù)的接口. 一個(gè)流對(duì)象提供了傳統(tǒng)的Open()/Close()/Read()/Write()/Seek()接口, 其中有些還提供內(nèi)存映射, 這樣數(shù)據(jù)的讀寫可以直接通過(guò)內(nèi)存訪問(wèn)來(lái)實(shí)現(xiàn). Stream對(duì)象用一個(gè)IO::URI對(duì)象來(lái)定義它們的資源位置. 通常情況下, 一個(gè)URI格式映射到一個(gè)特定的流對(duì)象. 例如”http:”URI格式一般映射到Net::HttpStream類, 而”file:”格式則映射到IO:FileStream類. 這個(gè)映射由StreamServer構(gòu)造一個(gè)流對(duì)象并匹配一個(gè)URI. 一個(gè)Nebula3應(yīng)用程序通過(guò)StreamServer::Register()方法來(lái)注冊(cè)這個(gè)映射關(guān)系, 這也是新的流對(duì)象和URI格式的注冊(cè)方法.

讓我們來(lái)看看有哪些重要的類:

  • IO::FileStream: 提供了訪問(wèn)主機(jī)文件系統(tǒng)的功能
  • IO::MemoryStream: 一個(gè)具有流接口的動(dòng)態(tài)內(nèi)存緩沖
  • IO::HttpStream: 提供了一個(gè)流接口來(lái)訪問(wèn)HTTP服務(wù)器文件

Stream reader和writer類提供了一些舒適的接口專門處理特定的數(shù)據(jù)格式. 這里有一些stream reader和writer:

  • IO::BinaryReader/IOBinaryWriter: 讀寫二進(jìn)制數(shù)據(jù)
  • IO::TextReader/IOTextWriter: 讀寫文本數(shù)據(jù)
  • IO::XmlReader/IOXmlWriter: 讀寫XML格式的數(shù)據(jù)
  • Messaging::MessageReader/MessagingMessageWriter: 消息序列化

這里有一個(gè)用XmlReader從HTTP服務(wù)器訪問(wèn)文件的簡(jiǎn)單例子

1:     using namespace IO;

2:

3:     Ptr<Stream> stream = StreamServer::Instance()->CreateStream("http://www.radonlabs.de/index.html");

4:     Ptr<XmlReader> xmlReader = XmlReader::Create();

5:     xmlReader->SetStream(stream);

6: if (xmlReader->Open())

7: {

8: // parse content here using the XmlReader interface

9: }

File Server(文件服務(wù)器)

Nebula3 IO::FileServer類提供了一個(gè)單件用于訪問(wèn)主機(jī)的文件系統(tǒng)進(jìn)行一些全局操作, 像定義重定向符, 復(fù)制, 刪除和檢查文件是否存在, 列出目錄內(nèi)容, 等等.

這個(gè)代碼片斷介紹FileServer的一些有用的方法:

using namespace IO;

using namespace Util;

FileServer* fs = FileServer::Instance();

// check if a file or directory exists

bool fileExists = fs->FileExists("home:bla.txt");

bool dirExists = fs->DirectoryExists("temp:bla/blub");

// resolve a path with assigns into an absolute filesystem

// path, this is sometimes necessary to interface with

// 3rd party libraries which don't understand Nebula3 paths directly

String absPath = fs->ResolveAssings("user:myapp/savegames");

// create a directory, note that all missing subdirectories will

// be created as well

fs->CreateDirectory("user:myapp/savegames");

// copy and delete files

fs->CopyFile("home:movie.mpg", "temp:movie.mpg");

fs->DeleteFile("temp:movie.mpg");

// list files in a directory matching a pattern

Array<String> files = fs->ListFiles("temp:", "*.txt");

// list all subdirectories in temp:

Array<String> dirs = fs->ListDirectories("temp:", "*");

控制臺(tái)

一般不直接調(diào)用IO::Console, 直接n_printf(), n_error(), n_dbgout(), n_warning()@_@


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲新中文字幕| 久久国产欧美精品| 91久久国产综合久久91精品网站| 性色av香蕉一区二区| 国产日本亚洲高清| 免费试看一区| 麻豆精品视频在线| 中文精品视频一区二区在线观看| 9人人澡人人爽人人精品| 国产精品豆花视频| 久久精品国产免费| 蜜桃av噜噜一区| 一本色道久久综合亚洲91| 亚洲线精品一区二区三区八戒| 国产欧美大片| 欧美激情综合色| 国产精品久久久免费| 老司机久久99久久精品播放免费| 久久在线播放| 亚洲欧美日韩国产综合| 久久一区激情| 亚洲一区二区成人| 久久人人九九| 亚洲天堂成人在线视频| 欧美在线91| 日韩视频在线播放| 久久av老司机精品网站导航| 亚洲精品乱码久久久久久蜜桃91| 亚洲无线视频| 亚洲国产精品视频一区| 亚洲一区中文| 日韩视频免费观看| 欧美一区激情| 亚洲一区二区在线看| 久久久久国产一区二区三区| 亚洲午夜在线视频| 久久久久国产精品一区| 亚洲欧美视频一区| 欧美激情五月| 久久综合网络一区二区| 欧美日韩免费区域视频在线观看| 久久精品国产精品 | 久久综合伊人| 国产精品久久久久久影视| 亚洲第一页在线| 国内一区二区三区| 亚洲免费影视| 一区二区三区福利| 欧美大片一区| 免费国产一区二区| 影音先锋中文字幕一区| 亚洲女爱视频在线| 亚洲永久网站| 欧美精品午夜| 亚洲区中文字幕| 亚洲国产欧洲综合997久久| 欧美专区中文字幕| 久久精品亚洲精品| 国产精品久久久久久久久久久久久久 | 亚洲国产精品va| 好吊一区二区三区| 久久精品99久久香蕉国产色戒| 亚洲桃色在线一区| 欧美日韩综合不卡| 一区二区三区黄色| 亚洲欧美日韩精品久久| 国产精品久久久久久久9999| 一区二区成人精品| 亚洲小说欧美另类社区| 欧美性做爰猛烈叫床潮| 一本大道久久a久久精品综合 | 国产日韩在线看| 亚洲欧美精品在线| 欧美永久精品| 韩国av一区二区三区在线观看| 久久不射中文字幕| 免费中文日韩| 亚洲精品国产精品乱码不99 | 久久国产综合精品| 猫咪成人在线观看| 亚洲精品在线看| 国产精品啊v在线| 亚洲欧美成人| 欧美99久久| 一区二区三区日韩在线观看| 国产精品久久久对白| 欧美一区二区三区日韩视频| 另类av一区二区| 亚洲精品美女| 国产精品大全| 久久久.com| 亚洲欧洲在线一区| 欧美一区二区三区在线| 亚洲国产精品ⅴa在线观看| 欧美美女视频| 欧美一区二区三区啪啪| 亚洲国产精品电影在线观看| 亚洲尤物在线| 在线国产精品一区| 国产精品成人一区二区| 久久狠狠亚洲综合| 亚洲免费av片| 久久综合久久久| 亚洲一区二区伦理| 亚洲国内在线| 国产欧美一级| 欧美日韩国产专区| 久久久久亚洲综合| 亚洲综合激情| 亚洲激情婷婷| 麻豆精品国产91久久久久久| 亚洲图片在线| 亚洲国产天堂久久国产91| 国产精品视频xxxx| 欧美日本久久| 欧美jizzhd精品欧美巨大免费| 亚洲一区尤物| 日韩视频亚洲视频| 亚洲福利视频网站| 久久久91精品国产| 亚洲一区免费网站| 99国产精品视频免费观看| 狠狠久久五月精品中文字幕| 国产精品成人v| 欧美国产在线电影| 久久亚洲不卡| 欧美主播一区二区三区| 亚洲午夜精品久久久久久浪潮 | 午夜精品一区二区三区在线| 亚洲美女淫视频| 亚洲级视频在线观看免费1级| 国产一区激情| 国产性色一区二区| 国产香蕉97碰碰久久人人| 国产精品欧美久久| 国产精品av久久久久久麻豆网| 蜜臀91精品一区二区三区| 久久久久国产精品一区三寸| 午夜精品影院在线观看| 亚洲伊人观看| 亚洲综合欧美日韩| 亚洲一级电影| 亚洲一区免费在线观看| 亚洲一区免费| 亚洲欧美综合另类中字| 欧美亚洲综合另类| 久久成人综合网| 欧美在线国产| 久久综合给合久久狠狠色 | 亚洲精品一二区| 亚洲精品久久久久中文字幕欢迎你| 亚洲成色精品| 亚洲精品国产无天堂网2021| 亚洲理伦电影| 一本色道久久综合亚洲精品高清| 99国产精品99久久久久久| 中文av字幕一区| 亚洲欧美另类国产| 久久精品2019中文字幕| 久久免费黄色| 欧美大胆成人| 国产精品国产自产拍高清av| 国产农村妇女精品| 在线欧美三区| 夜夜嗨av一区二区三区中文字幕 | 亚洲精品日韩在线观看| 99天天综合性| 香蕉免费一区二区三区在线观看| 久久久国产精品亚洲一区| 狂野欧美一区| 欧美日韩专区| 黑人一区二区| 一本色道久久综合亚洲精品小说| 亚洲欧美经典视频| 久久午夜羞羞影院免费观看| 91久久精品美女高潮| 亚洲午夜一级| 老司机久久99久久精品播放免费| 欧美精品亚洲精品| 国内揄拍国内精品少妇国语| 亚洲精品资源美女情侣酒店| 欧美一区二区三区久久精品茉莉花| 久久夜色撩人精品| 99一区二区| 久久一区国产| 国产精品影音先锋| 99精品99久久久久久宅男| 久久国产精品一区二区| 91久久香蕉国产日韩欧美9色| 午夜激情亚洲| 欧美日韩午夜精品| 亚洲国产视频一区| 久久精品一区四区| 日韩一二三区视频| 免费不卡亚洲欧美| 国产日韩精品久久久| 亚洲少妇诱惑| 亚洲国产cao| 久久婷婷av| 激情久久影院|