| window.runtime 属性 | window.runtime.flash.utils.ByteArray |
| 继承 | ByteArray Object |
注意:ByteArray 类适用于需要在字节层访问数据的高级 开发人员。
内存中的数据是一个压缩字节数组(数据类型的最紧凑表示形式),但可以使用标准 [](数组访问)运算符来操作 ByteArray 类的实例。也可以使用与 URLStream 和 Socket 类中的方法相类似的方法将它作为内存中的文件进行读取和写入。
此外,还支持 zlib 压缩和解压缩,以及 Action Message Format (AMF) 对象序列化。
ByteArray 类可能的用途包括:
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
| bytesAvailable : uint [只读 (read-only)]
可从字节数组的当前位置到数组末尾读取的数据的字节数。 | ByteArray | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| defaultObjectEncoding : uint [静态]
指示用于新 ByteArray 实例的 ByteArray 类的默认对象编码。 | ByteArray | ||
| endian : String
更改或读取数据的字节顺序;Endian.BIG_ENDIAN 或 Endian.LITTLE_ENDIAN。 | ByteArray | ||
| length : uint
ByteArray 对象的长度(以字节为单位)。 | ByteArray | ||
| objectEncoding : uint
用于确定在写入或读取 ByteArray 实例时应使用 ActionScript 3.0、ActionScript 2.0 还是 ActionScript 1.0 格式。 | ByteArray | ||
| position : uint
将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中。 | ByteArray | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| 方法 | 定义方 | ||
|---|---|---|---|
创建一个表示填充的字节数组的 ByteArray 实例,以便使用此类中的方法和属性来优化数据存储和数据流。 | ByteArray | ||
压缩字节数组。 | ByteArray | ||
![]() | hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 | Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 | Object | |
readBoolean():Boolean
从字节流中读取布尔值。 | ByteArray | ||
readByte():int
从字节流中读取带符号的字节。 | ByteArray | ||
从字节流中读取 length 参数指定的数据字节数。 | ByteArray | ||
readDouble():Number
从字节流中读取一个 IEEE 754 双精度(64 位)浮点数。 | ByteArray | ||
readFloat():Number
从字节流中读取一个 IEEE 754 单精度(32 位)浮点数。 | ByteArray | ||
readInt():int
从字节流中读取一个带符号的 32 位整数。 | ByteArray | ||
readMultiByte(length:uint, charSet:String):String
使用指定的字符集从字节流中读取指定长度的多字节字符串。 | ByteArray | ||
readObject():*
从字节数组中读取一个以 AMF 序列化格式进行编码的对象。 | ByteArray | ||
readShort():int
从字节流中读取一个带符号的 16 位整数。 | ByteArray | ||
readUnsignedByte():uint
从字节流中读取无符号的字节。 | ByteArray | ||
readUnsignedInt():uint
从字节流中读取一个无符号的 32 位整数。 | ByteArray | ||
readUnsignedShort():uint
从字节流中读取一个无符号的 16 位整数。 | ByteArray | ||
readUTF():String
从字节流中读取一个 UTF-8 字符串。 | ByteArray | ||
readUTFBytes(length:uint):String
从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串。 | ByteArray | ||
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 | Object | |
toString():String
将字节数组转换为字符串。 | ByteArray | ||
uncompress(algorithm:String):void
解压缩字节数组。 | ByteArray | ||
![]() | valueOf():Object
返回指定对象的原始值。 | Object | |
writeBoolean(value:Boolean):void
写入布尔值。 | ByteArray | ||
在字节流中写入一个字节。 | ByteArray | ||
将指定字节数组 bytes(起始偏移量为 bytes,从 0 开始的索引)中包含 length 个字节的字节序列写入字节流。 | ByteArray | ||
writeDouble(value:Number):void
在字节流中写入一个 IEEE 754 双精度(64 位)浮点数。 | ByteArray | ||
writeFloat(value:Number):void
在字节流中写入一个 IEEE 754 单精度(32 位)浮点数。 | ByteArray | ||
在字节流中写入一个带符号的 32 位整数。 | ByteArray | ||
writeMultiByte(value:String, charSet:String):void
使用指定的字符集将多字节字符串写入字节流。 | ByteArray | ||
将对象以 AMF 序列化格式写入字节数组。 | ByteArray | ||
writeShort(value:int):void
在字节流中写入一个 16 位整数。 | ByteArray | ||
writeUnsignedInt(value:uint):void
在字节流中写入一个无符号的 32 位整数。 | ByteArray | ||
将 UTF-8 字符串写入字节流。 | ByteArray | ||
writeUTFBytes(value:String):void
将 UTF-8 字符串写入字节流。 | ByteArray | ||
| bytesAvailable | 属性 |
bytesAvailable:uint [只读 (read-only)] 可从字节数组的当前位置到数组末尾读取的数据的字节数。
每次访问 ByteArray 对象时,将 bytesAvailable 属性与读取方法结合使用,以确保读取有效的数据。
| defaultObjectEncoding | 属性 |
defaultObjectEncoding:uint [读写]
指示用于新 ByteArray 实例的 ByteArray 类的默认对象编码。在创建新的 ByteArray 实例时,该实例上的编码以 defaultObjectEncoding 的值开头。defaultObjectEncoding 属性被初始化为 ObjectEncoding.AMF3。
将对象写入二进制数据或从中读取对象时,将使用 objectEncoding 值来确定应使用 ActionScript 3.0、ActionScript2.0 还是 ActionScript 1.0 格式。该值为 ObjectEncoding 类中的常数。
另请参见
| endian | 属性 |
| length | 属性 |
length:uint [读写] ByteArray 对象的长度(以字节为单位)。
如果将长度设置为大于当前长度的值,该字节数组的右侧将用零填充。
如果将长度设置为小于当前长度的值,将会截断该字节数组。
| objectEncoding | 属性 |
objectEncoding:uint [读写] 用于确定在写入或读取 ByteArray 实例时应使用 ActionScript 3.0、ActionScript 2.0 还是 ActionScript 1.0 格式。该值为 ObjectEncoding 类中的常数。
另请参见
| position | 属性 |
position:uint [读写] 将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中。下一次调用读取方法时将在此位置开始读取,或者下一次调用写入方法时将在此位置开始写入。
| ByteArray | () | 构造函数 |
function ByteArray()创建一个表示填充的字节数组的 ByteArray 实例,以便使用此类中的方法和属性来优化数据存储和数据流。
| compress | () | 方法 |
function compress(algorithm:String):void
压缩字节数组。将压缩整个字节数组。对于在 Adobe AIR 中运行的内容,可以通过传递一个值(在 CompressionAlgorithm 类中定义)作为 algorithm 参数来指定压缩算法。Flash Player 只支持默认的 zlib 算法。
在调用后,ByteArray 的 length 属性将设置为新长度。position 属性将设置为字节数组末尾。
http://www.ietf.org/rfc/rfc1950.txt 中介绍了 zlib 压缩的数据格式。
http://www.ietf.org/rfc/rfc1951.txt 中介绍了 deflate 压缩算法。
这种 deflate 压缩算法用于多种压缩格式,如 zlib、gzip、一些 zip 实现等。在使用这些压缩格式之一压缩数据时,除了存储原始数据的压缩版本之外,压缩格式数据(例如 .zip 文件)还包括元数据信息。举例来说,各种文件格式中包括的元数据的类型有文件名、文件修改日期/时间、原始文件大小、可选的注释、校验和数据等。
例如,在使用 zlib 算法压缩 ByteArray 时,将以特定的格式构建生成的 ByteArray。一些字节包含有关所压缩数据的元数据,而另一些字节包含原始 ByteArray 数据的实际压缩版本。根据 zlib 压缩数据格式规范的定义,这些字节(即包含原始数据的压缩版本的部分)使用 deflate 算法进行压缩。因此,这些字节与对原始 ByteArray 调用 compress(CompressionAlgorithm.DEFLATE) 效果完全相同。不过,compress(CompressionAlgorithm.ZLIB) 生成的结果包括额外的元数据,而 compress(CompressionAlgorithm.DEFLATE) 生成的结果只包括原始 ByteArray 数据的压缩版本,没有任何其他内容。
因此,若要使用 deflate 格式以特定格式(如 gzip 或 zip)压缩 ByteArray 实例的数据,不能只调用 compress(CompressionAlgorithm.DEFLATE)。必须创建一个按照压缩格式规范构建的 ByteArray,包括相应的元数据以及使用 deflate 格式获取的压缩数据。同样,若要对以 gzip 或 zip 这样的格式压缩的数据进行解码,不能对该数据简单地调用 uncompress(CompressionAlgorithm.DEFLATE)。首先,必须将元数据与压缩数据分离,然后才能使用 deflate 格式对压缩数据进行解压缩。
参数
algorithm:String (default = NaN) — 压缩时所用的压缩算法。有效值定义为 CompressionAlgorithm 类中的常量。默认情况下使用 zlib 格式。仅为 Adobe AIR 中运行的内容识别此参数。Flash Player 只支持默认的 zlib 算法,如果尝试为此参数传递一个值,Flash Player 将引发异常。
|
另请参见
| readBoolean | () | 方法 |
function readBoolean():Boolean
从字节流中读取布尔值。读取单个字节,如果字节非零,则返回 true,否则返回 false。
Boolean — 如果字节不为零,则返回 true,否则返回 false。
|
EOFError — 没有足够的数据可供读取。
|
| readByte | () | 方法 |
function readByte():int从字节流中读取带符号的字节。
返回值的范围是从 -128 到 127。
返回int — 介于 -128 和 127 之间的整数。
|
EOFError — 没有足够的数据可供读取。
|
| readBytes | () | 方法 |
function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从字节流中读取 length 参数指定的数据字节数。从 offset 指定的位置开始,将字节读入 bytes 参数指定的 ByteArray 对象中,并将字节写入目标 ByteArray 中。
参数
bytes:ByteArray — 要将数据读入的 ByteArray 对象。
| |
offset:uint (default = 0) — bytes 中的偏移(位置),应从该位置写入读取的数据。
| |
length:uint (default = 0) — 要读取的字节数。默认值 0 导致读取所有可用的数据。
|
EOFError — 没有足够的数据可供读取。
|
| readDouble | () | 方法 |
function readDouble():Number从字节流中读取一个 IEEE 754 双精度(64 位)浮点数。
返回Number — 双精度(64 位)浮点数。
|
EOFError — 没有足够的数据可供读取。
|
| readFloat | () | 方法 |
function readFloat():Number从字节流中读取一个 IEEE 754 单精度(32 位)浮点数。
返回Number — 单精度(32 位)浮点数。
|
EOFError — 没有足够的数据可供读取。
|
| readInt | () | 方法 |
function readInt():int从字节流中读取一个带符号的 32 位整数。
返回值的范围是从 -2147483648 到 2147483647。
返回int — 介于 -2147483648 和 2147483647 之间的 32 位带符号整数。
|
EOFError — 没有足够的数据可供读取。
|
| readMultiByte | () | 方法 |
function readMultiByte(length:uint, charSet:String):String使用指定的字符集从字节流中读取指定长度的多字节字符串。
参数
length:uint — 要从字节流中读取的字节数。
| |
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift-jis"、"cn-gb"、"iso-8859-1"”等。有关完整列表,请参阅Supported Character Sets。
注意:如果当前系统无法识别 |
String — UTF-8 编码的字符串。
|
EOFError — 没有足够的数据可供读取。
|
| readObject | () | 方法 |
| readShort | () | 方法 |
function readShort():int从字节流中读取一个带符号的 16 位整数。
返回值的范围是从 -32768 到 32767。
返回int — 介于 -32768 和 32767 之间的 16 位带符号整数。
|
EOFError — 没有足够的数据可供读取。
|
| readUnsignedByte | () | 方法 |
function readUnsignedByte():uint从字节流中读取无符号的字节。
返回值的范围是从 0 到 255。
返回uint — 介于 0 和 255 之间的 32 位无符号整数。
|
EOFError — 没有足够的数据可供读取。
|
| readUnsignedInt | () | 方法 |
function readUnsignedInt():uint从字节流中读取一个无符号的 32 位整数。
返回值的范围是从 0 到 4294967295。
返回uint — 介于 0 和 4294967295 之间的 32 位无符号整数。
|
EOFError — 没有足够的数据可供读取。
|
| readUnsignedShort | () | 方法 |
function readUnsignedShort():uint从字节流中读取一个无符号的 16 位整数。
返回值的范围是从 0 到 65535。
返回uint — 介于 0 和 65535 之间的 16 位无符号整数。
|
EOFError — 没有足够的数据可供读取。
|
| readUTF | () | 方法 |
function readUTF():String从字节流中读取一个 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度)。
返回String — UTF-8 编码的字符串。
|
EOFError — 没有足够的数据可供读取。
|
另请参见
| readUTFBytes | () | 方法 |
function readUTFBytes(length:uint):String
从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串。
参数
length:uint — 指明 UTF-8 字节长度的无符号短整型数。
|
String — 由指定长度的 UTF-8 字节组成的字符串。
|
EOFError — 没有足够的数据可供读取。
|
| toString | () | 方法 |
function toString():String
将字节数组转换为字符串。如果数组中的数据以 Unicode 字节顺序标记开头,应用程序在将其转换为字符串时将保持该标记。如果 System.useCodePage 设置为 true,应用程序在转换时会将数组中的数据视为处于当前系统代码页中。
String — 字节数组的字符串表示形式。
|
| uncompress | () | 方法 |
function uncompress(algorithm:String):void
解压缩字节数组。对于在 Adobe AIR 中运行的内容,可以通过传递一个值(在 CompressionAlgorithm 类中定义)作为 algorithm 参数来指定压缩算法。字节数组必须已经使用相同的算法进行压缩。Flash Player 只支持默认的 zlib 算法。
在调用后,ByteArray 的 length 属性将设置为新长度。position 属性将设置为 0。
http://www.ietf.org/rfc/rfc1950.txt 中介绍了 zlib 压缩的数据格式。
http://www.ietf.org/rfc/rfc1951.txt 中介绍了 deflate 压缩算法。
在对使用 deflate 压缩算法的格式压缩的数据(如采用 gzip 或 zip 格式的数据)进行解码时,对包含压缩格式数据的 ByteArray 调用 uncompress(CompressionAlgorithm.DEFLATE) 将不起作用。首先,必须将作为压缩数据格式的一部分而包括的元数据与实际压缩数据分开。有关详细信息,请参阅 compress() 方法的描述。
参数
algorithm:String (default = NaN) — 解压缩时要使用的压缩算法。它必须是用于压缩该数据的相同的压缩算法。有效值定义为 CompressionAlgorithm 类中的常量。默认情况下使用 zlib 格式。仅为 Adobe AIR 中运行的内容识别此参数。Flash Player 只支持默认的 zlib 算法,如果尝试为此参数传递一个值,Flash Player 将引发异常。
|
IOError — 数据不是有效的压缩数据;它不是使用用于压缩的相同压缩算法进行压缩的。
|
另请参见
| writeBoolean | () | 方法 |
function writeBoolean(value:Boolean):void
写入布尔值。根据 value 参数写入单个字节。如果为 true,则写入 1,如果为 false,则写入 0。
参数
value:Boolean — 确定写入哪个字节的布尔值。如果该参数为 true,则该方法写入 1;如果该参数为 false,则该方法写入 0。
|
| writeByte | () | 方法 |
function writeByte(value:int):void在字节流中写入一个字节。
使用参数的低 8 位。忽略高 24 位。
参数
value:int — 一个 32 位整数。低 8 位将被写入字节流。
|
| writeBytes | () | 方法 |
function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
将指定字节数组 bytes(起始偏移量为 offset,从零开始的索引)中包含 length 个字节的字节序列写入字节流。
如果省略 length 参数,则使用默认长度 0;该方法将从 offset 开始写入整个缓冲区。如果还省略了 offset 参数,则写入整个缓冲区。
如果 offset 或 length 超出范围,它们将被锁定到 bytes 数组的开头和结尾。
参数
bytes:ByteArray — ByteArray 对象。
| |
offset:uint (default = 0) — 从 0 开始的索引,表示在数组中开始写入的位置。
| |
length:uint (default = 0) — 一个无符号整数,表示在缓冲区中的写入范围。
|
| writeDouble | () | 方法 |
function writeDouble(value:Number):void在字节流中写入一个 IEEE 754 双精度(64 位)浮点数。
参数
value:Number — 双精度(64 位)浮点数。
|
| writeFloat | () | 方法 |
function writeFloat(value:Number):void在字节流中写入一个 IEEE 754 单精度(32 位)浮点数。
参数
value:Number — 单精度(32 位)浮点数。
|
| writeInt | () | 方法 |
| writeMultiByte | () | 方法 |
function writeMultiByte(value:String, charSet:String):void使用指定的字符集将多字节字符串写入字节流。
参数
value:String — 要写入的字符串值。
| |
charSet:String — 指示要使用的字符集的字符串。可能的字符集字符串包括 "shift-jis"、"cn-gb"、"iso-8859-1"”等。有关完整列表,请参阅Supported Character Sets。
|
| writeObject | () | 方法 |
| writeShort | () | 方法 |
function writeShort(value:int):void在字节流中写入一个 16 位整数。使用参数的低 16 位。忽略高 16 位。
参数
value:int — 32 位整数,该整数的低 16 位将被写入字节流。
|
| writeUnsignedInt | () | 方法 |
| writeUTF | () | 方法 |
function writeUTF(value:String):void将 UTF-8 字符串写入字节流。先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节。
参数
value:String — 要写入的字符串值。
|
RangeError — 如果长度大于 65535。
|
| writeUTFBytes | () | 方法 |
function writeUTFBytes(value:String):void
将 UTF-8 字符串写入字节流。类似于 writeUTF() 方法,但 writeUTFBytes() 不使用 16 位长度的词为字符串添加前缀。
参数
value:String — 要写入的字符串值。
|