StupidBeauty
Read times:1278Posted at:Sun Feb 26 03:22:38 2012
- no title specified

ClanLib维基翻译:主文档:文件服务和输入/输出服务,MainDocs:File Services And I/O Devices

输入输出设备

ClanLib包含一個简单的输入输出设备抽象层,是由CL_IODevice 类定义的。这個抽象层允许ClanLib 和妳的程序将相同的对象和函数用于不同的设备,例如文件、套接字、管道和内存缓冲区。

妳可以实现妳自己的输入/输出设备,只需实现CL_IODeviceProvider 接口并且将这個对象传递给CL_IODevice 构造函数。然而,在大部分情况下,妳只需简单地使用ClanLib 提供的标准输入/输出设备:

  • •.CL_File

  • •.CL_IODevice_Memory

  • •.CL_PipeConnection

  • •.CL_TCPConnection (clanNetwork)

文件

文件的读写毫无压力。很简单,构造一個CL_File 对象,带上所需的打开模式、访问标志和共享标志,然后开始对它调用函数吧:

CL_File file("filename.txt", CL_File::open_existing, CL_File::access_read);

CL_DataBuffer buffer(file.get_size());

file.read(buffer.get_data(), buffer.get_size());

file.close();

其它与文件相关的操作都是由一些不同的辅助类支持的:

  • •.CL_FileHelp

  • •.CL_PathHelp

  • •.CL_Directory

  • •.CL_DirectoryScanner

CL_FileHelp包含一些静态函数,提供对文件的通用操作的支持,比如说复制或者删除一個文件。CL_PathHelp是一個与文件路径相关的辅助类。CL_Directory类包含一些对目录进行操作的静态函数,CL_DirectoryScanner 类用来列举出某個目录中的文件。

这些类的功能都很直观,所以我们不细说咯,只在下面提供一個简单的示例:

CL_FileHelp::delete_file("foobar.txt");

CL_Console::write_line("The file extension is %1", CL_PathHelp::get_extension("foobar.txt"));

CL_Console::write_line("Current directory is %1", CL_Directory::get_current());

CL_DirectoryScanner scanner;

if (scanner.scan("/", "*"))

{

while (scanner.next())

{

CL_Console::write_line(scanner.get_name());

}

}

管道

ClanLib提供两个类来支持管道:

  • •.CL_PipeListen

  • •.CL_PipeConnection

CL_PipeListen用来创建一個命名管道,以让其它进程连接。CL_PipeConnection被用来进行实际的通信,并且表示两个节点之间的管道连接。

它的设计与clanNetwork 中的CL_TCPListen 和CL_TCPConnection 类似。

Zip压缩包

Zip文件格式的支持类:

  • •.CL_ZipArchive + CL_ZipEntry

  • •.CL_ZipReader + CL_ZipWriter

虚拟文件系统(Virtual File Systems (VFS))

文件系统抽象类:

  • •.CL_VirtualFileSystem

  • •.CL_VirtualFileSource

  • •.CL_VirtualDirectory

  • •.CL_VirtualDirectoryListing

  • •.CL_VirtualDirectoryListingEntry

Your opinions
Your name:Email:Website url:Opinion content: