8.5. IO

8.5.1. 创建
8.5.2. 写入
8.5.3. 读文件

I-F的IO主要封装了文件系统的操作,比如文件的新建、删除、修改、改名和目录的创建、删除、改名等。以下是几个简单的例子:

8.5.1. 创建

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();
}

8.5.2. 写入

文件可以使用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();

8.5.3. 读文件

延续上面的例子,如果想读取文件内容,可以使用IFileReader对象:

//得到文件对象
$file = new IFile("a/b/c/e.txt");

//创建reader
$reader $file->getReader();
echo 
$reader->read() . "\n";//读整个内容
echo $reader->read(2100) . "\n";//从第二个字符起读100字节
echo $reader->readChar() . "\n";//从当前位置读取一个字符
echo $reader->readLine() . "\n";//从当前位置读取一行
echo $reader->getPos() . "\n";//得到当前位置
echo $reader->eof();//判断是否到了文件末尾
$reader->close();

如你所见,在使用writer,appender和reader之后执行close方法是一个很好的习惯。