検索
ホームページphp教程PHP源码PHP实现java中的DatainputStream类.

在项目中,碰到一个解析流的操作,php里面没有现成的类. 
那没办法,只能用二进制模式打开文件,再和java的datainputstream对比着打开文件,一个一个的实现流读取和解析. 

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

DataInputStream.php

<?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(&#39;流文件已经到末尾,读取错误&#39;,222);
                } else {
                    return $read;
                }
            } else {
                throw new Exception(&#39;流文件已经到末尾,读取错误&#39;,222);
            }
        } else {
            return &#39;&#39;;
        }
    }
     
    /**
     * 读取一个字节,并转换成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)));
    }
}
?>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター