龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP实现java中的DatainputStream类.

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
在项目中,碰到一个解析流的操作,php里面没有现成的类.br / 那没办法,只能用二进制模式打开文件,再和java的datainputstream对比着打开文件,一个一个的实现流读取和解析.br / br / 废话不多说
在项目中,碰到一个解析流的操作,php里面没有现成的类.
那没办法,只能用二进制模式打开文件,再和java的datainputstream对比着打开文件,一个一个的实现流读取和解析.

废话不多说,代码贴出,其实很简单很简单.

<?php
/**
 * 流解析
 * ---------------------------------------------
 * @Author: Simon 夏向红 sanwkj@163.com
 * @Date: 2012-02-22
 * @package cn.com.nearme.gostore.theme
 * @name :DataInputStream.php
 * @version v1.0
 * 
*/
class DataInputStream {
	private $stream = null;
	
	/**
	 * 构造函数
	 *
	 * @param stream of fopen .. $in
	 */
	public function __construct( $in ){
		$this->stream = $in;
	}
	
	/**
	 * 析构函数
	 *
	 */
	public function __destruct(){
		@fclose( $this->stream );
	}
	
	/**
	 * 读取字节
	 *
	 * @param int sizeof you want to read $len
	 * @return string
	 */
	private function read( $len=1 ){
		$len = intval( $len );
		if( $len>0 ) {
			if( !feof( $this->stream ) ) {
				$read = @fread($this->stream,$len);
				if( strlen($read)!=$len ){
					throw new Exception('流文件已经到末尾,读取错误',222);
				} else {
					return $read;
				}
			} else {
				throw new Exception('流文件已经到末尾,读取错误',222);
			}
		} else {
			return '';
		}
	}
	
	/**
	 * 读取一个字节,并转换成int
	 *
	 * @return int
	 */
	public function readByte(){
		return hexdec(bin2hex($this->read(1)));
	}
	
	/**
	 * 短整形
	 *
	 * @return int
	 */
	public function readShort(){
		return hexdec(bin2hex($this->read(2)));
	}
	
	/**
	 * 整形数据
	 *
	 * @return int
	 */
	public function readInt(){
		return hexdec(bin2hex($this->read(4)));
	}
	
	/**
	 * 读取一个字符串
	 *
	 * @return string
	 */
	public function readUTF(){
		$len = $this->readShort();
		return $this->read($len);
	}
	
	/**
	 * 读取指定长度的数据,并作为字符串返回,图片等二进制文件,可能需要这样读取.
	 *
	 * @param int $len
	 * @return unknown
	 */
	public function readFully( $len ) {
		return $this->read( $len );
	}
	
	/**
	 * readUTF的别名
	 *
	 * @return unknown
	 */
	public function readString(){
		return $this->readUTF();
	}
	
	/**
	 * 长整形.
	 *
	 * @return unknown
	 */
	public function readLong(){
		return hexdec(bin2hex($this->read(8)));
	}
}
?>

2. [代码][PHP]代码     跳至 [1] [2] [全屏预览]

//看了后,是不是很简单啊,在此基础上,下一步就是另一个代码分享,php解析apk信息.大家敬请期待.-_-.
精彩图集

赞助商链接