最近很少玩转代码了,有点生疏。国内程序员的平均年龄比国外小很多,反映了国内IT业的某些现实;试问能有几个上了30的还将开发作为自己人生的目标?
正题:
ACE里的文件操作与平常的Win32里面的文件操作有所不同,这是因为ACE是为网络开发而设计的,里面普遍都遵循了Client/Server模式,这样在操作文件时,ACE把文件看做是一个Socket服务器,而进行文件操作的类(ACE_FILE_IO)被看做是一个Socket Client。
有了上面的认识,使用ACE的文件操作就容易理解了:
1、调用ACE_FILE_IO.send(...)其实就是进行写文件的操作;
2、调用ACE_FILE_IO.recv(...)其实就是进行文件的读操作。
3、ACE里面的文件操作类主要包括:ACE_IO_SAP、ACE_FILE、ACE_FILE_IO、ACE_FILE_Connector。
ACE_FILE_Connector是一个用来产生ACE_FILE_IO的类工厂。
ACE_FILE_IO继承于ACE_FILE,ACE_FILE继承于ACE_IO_SAP。
ACE_FILE只能够对文件进行一些整体性的操作,如:关闭文件(close)、删除文件(remove/ulink)、获取文件属性(get_info)、设置文件大小(truncate)、定位或获取文件游标位置(seek/position/tell)、获取文件路径(get_local_addr/get_remote_addr)。
ACE_FILE_IO则能够进行文件的读写操作,如:多个版本的send/recv, send_n/recv_n, sendv/recvv, sendv_n/recvv_n
ACE_FILE_Connector实际是为了使ACE_FILE类族能够符合Connector/Acceptor设计模式而设计的,只是没有相应的Acceptor。