I-F的IO主要封装了文件系统的操作,比如文件的新建、删除、修改、改名和目录的创建、删除、改名等。以下是几个简单的例子:
I-F创建目录和文件都相当简单:
//创建对象
$dir = new IFile("a/b/c");
//目录是否存在
if (!$dir->exists()) {
$dir->mkdirs();//创建新的目录
}
//创建文件
$file = new IFile("a/b/c/e.txt");
if (!$file->exists()) {
$file->createFile();
}
文件可以使用writer或appender写入数据,它们的区别是writer将会用新的数据覆盖原有的文件内容,而appender则会在文件的末尾开始写入数据。
writer使用方法:
//使用文件writer
$writer = $file->getWriter();
$writer->write("abcdef");//写入数据
$writer->close();
之后的文件内容为:abcdef。
appender使用方法:
//使用文件appender
$appender = $file->getAppender();
$appender->append("123456");
$appender->close();
之后的文件内容为:abcdef123456。
为了避免多个进程之间的写冲突,可以使用锁定和释放锁定,以刚才的appender为例:
//使用文件appender
$appender = $file->getAppender();
//锁定
$appender->lock();
//开始写入
$appender->append("123456");
//释放锁定
$appender->release();
//关闭句柄
$appender->close();
延续上面的例子,如果想读取文件内容,可以使用IFileReader对象:
//得到文件对象
$file = new IFile("a/b/c/e.txt");
//创建reader
$reader = $file->getReader();
echo $reader->read() . "\n";//读整个内容
echo $reader->read(2, 100) . "\n";//从第二个字符起读100字节
echo $reader->readChar() . "\n";//从当前位置读取一个字符
echo $reader->readLine() . "\n";//从当前位置读取一行
echo $reader->getPos() . "\n";//得到当前位置
echo $reader->eof();//判断是否到了文件末尾
$reader->close();
如你所见,在使用writer,appender和reader之后执行close方法是一个很好的习惯。