+
95
-

回答

我们以php为例实现一个自定义的二进制文件数据库,通过pack与unpack格式化数据进行存储,示例如下:

<?php

class Person_Data

{

/**

* 数据库文件路径

*

* @var string

*/

var $_database = 'wps.db';

/**

* 打开一个数据库文件

*

* @param string $file 数据库文件名

*/

function openDb($file = 'wps.db') {

$this->_database = $file;

$this->_database = fopen($this->_database, 'ab+');

}

/**

* 向数据库中写入一条记录

*

* @param array $data

* @return void

*/

function writeRecord($data) {

$name = pack('a8', $data['name']);

$age = pack('S', $data['age']);

$email = pack('a30', $data['email']);

fwrite($this->_database, $name . $age . $email);

}

/**

* 读取一条记录

*

* @param int $count optional default to 0 记录id数

* @return array

*/

function read($count = 0) {

rewind($this->_database);

fseek($this->_database, 40 * $count);

$return = array();

$return['name'] = unpack('a8', fread($this->_database, 8));

$return['name'] = $return['name'][1];

$return['age'] = unpack('S', fread($this->_database, 2));

$return['age'] = $return['age'][1];

$return['email'] = unpack('a30', fread($this->_database, 30));

$return['email'] = $return['email'][1];

return $return;

}

}

$me = array('name' => '张涛',
'age' => 23,
'email' => 'bfw@bfw.wiki');
$data = new Person_Data();
$data->openDb('wps.db');
$data->writeRecord($me);
print_r($data->read(1));


网友回复

我知道答案,我要回答