运行时版本: | AIR 1.0 Flash Player 9 |
IDataInput 接口提供一组用于读取二进制数据的方法。此接口是写入二进制数据的 IDataOutput 接口的 I/O 对应接口。
默认情况下,所有 IDataInput 和 IDataOutput 操作均为“bigEndian”(序列中的最高有效字节存储在最低或第一个存储地址),而且都不分块。如果可用数据不足,则会引发 EOFError
异常。使用 IDataInput.bytesAvailable
属性来确定可供读取的数据有多少。
符号扩展名仅在读取数据时有效,写入数据时无效。因此,无需单独的写入方法就可以使用 IDataInput.readUnsignedByte()
和 IDataInput.readUnsignedShort()
。换言之:
-
将
IDataOutput.writeByte()
与 IDataInput.readUnsignedByte()
和 IDataInput.readByte()
一起使用。
-
将
IDataOutput.writeShort()
与 IDataInput.readUnsignedShort()
和 IDataInput.readShort()
一起使用。
查看示例
bytesAvailable:uint
[只读 (read-only)]
运行时版本: | AIR 1.0 Flash Player 9 |
返回可在输入缓冲区中读取的数据的字节数。在尝试使用某一种读取方法读取数据之前,用户代码必须调用 bytesAvailable
以确保有足够的数据可用。
实现 public function get bytesAvailable():uint
endian:String
[读写]
运行时版本: | AIR 1.0 Flash Player 9 |
数据的字节顺序:为 Endian 类中的 BIG_ENDIAN
或 LITTLE_ENDIAN
常量。
实现 public function get endian():String
public function set endian(value:String):void
另请参见
objectEncoding:uint
[读写]
运行时版本: | AIR 1.0 Flash Player 9 |
用于确定在使用 readObject()
方法写入或读取二进制数据时是使用 AMF3 格式还是 AMF0 格式。该值为 ObjectEncoding 类中的常数。
实现 public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
另请参见
public function readBoolean():Boolean
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取布尔值。读取单个字节,如果字节非零,则返回 true
,否则返回 false
。
返回 | Boolean —
一个布尔值,如果字节不为零,则为 true ,否则为 false 。
|
引发 public function readByte():int
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取带符号的字节。
返回 | int — 返回值的范围是从 -128 到 127。 |
引发 public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取 length
参数指定的数据字节数。将从 offset
指定的位置开始,将字节读入 bytes
参数指定的 ByteArray 对象。
参数
| bytes:ByteArray —
要将数据读入的 ByteArray 对象。
|
|
| offset:uint (default = 0 ) —
bytes 参数中的偏移,应从该位置开始读取数据。
|
|
| length:uint (default = 0 ) — 要读取的字节数。默认值 0 导致读取所有可用的数据。 |
引发 public function readDouble():Number
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取 IEEE 754 双精度浮点数。
返回引发 public function readFloat():Number
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取 IEEE 754 单精度浮点数。
返回引发 public function readInt():int
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取带符号的 32 位整数。
返回 | int — 返回值的范围是从 -2147483648 到 2147483647。 |
引发 public function readMultiByte(length:uint, charSet:String):String
运行时版本: | AIR 1.0 Flash Player 9 |
使用指定的字符集从文件流、字节流或字节数组中读取指定长度的多字节字符串。
参数
| length:uint — 要从字节流中读取的字节数。 |
|
| charSet:String —
表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift-jis" 、"cn-gb" 、"iso-8859-1" ”等。有关完整列表,请参阅Supported Character Sets。
注意:如果当前系统无法识别 charSet 参数的值,则 Adobe®Flash®Player 或 Adobe®AIR™ 将采用系统的默认代码页作为字符集。例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, "iso-8859-01") 中)可能适用于您的开发计算机,而不适用于其它计算机。在其他计算机上,Flash Player 或 AIR 运行时将使用系统的默认代码页。
|
返回引发 public function readObject():*
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取以 AMF 序列化格式编码的对象。
返回引发另请参见
public function readShort():int
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取带符号的 16 位整数。
返回 | int — 返回值的范围是从 -32768 到 32767。 |
引发 public function readUnsignedByte():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取无符号的字节。
返回引发 public function readUnsignedInt():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取无符号的 32 位整数。
返回 | uint — 返回值的范围是从 0 到 4294967295。 |
引发 public function readUnsignedShort():uint
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取无符号的 16 位整数。
返回 | uint — 返回值的范围是从 0 到 65535。 |
引发 public function readUTF():String
运行时版本: | AIR 1.0 Flash Player 9 |
从文件流、字节流或字节数组中读取 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度)。
此方法类似于 Java ® IDataInput 接口中的 readUTF()
方法。
返回 | String — 由字符的字节表示形式生成的 UTF-8 字符串。 |
引发 public function readUTFBytes(length:uint):String
运行时版本: | AIR 1.0 Flash Player 9 |
从字节流或字节数组中读取包含 个字节的 UTF-8 字节序列,并返回一个字符串。
参数
返回 | String — 由指定长度字符的字节表示形式生成的 UTF-8 字符串。 |
引发
以下示例使用
DataInputExample
类将布尔值和 pi 的双精度浮点表示形式写入字节数组。这是使用以下步骤完成的:
-
声明新的 ByteArray 对象实例
byteArr
。
-
写入布尔值
false
的字节等效值和数学值 pi 的双精度浮点等效值。
- 重新读取布尔值和双精度浮点数。
注意如何在末尾添加一段代码以检查文件结尾错误,确保读取的字节流没有超出文件结尾。
package {
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.errors.EOFError;
public class DataInputExample extends Sprite {
public function DataInputExample() {
var byteArr:ByteArray = new ByteArray();
byteArr.writeBoolean(false);
byteArr.writeDouble(Math.PI);
byteArr.position = 0;
try {
trace(byteArr.readBoolean()); // false
}
catch(e:EOFError) {
trace(e); // EOFError: Error #2030: End of file was encountered.
}
try {
trace(byteArr.readDouble()); // 3.141592653589793
}
catch(e:EOFError) {
trace(e); // EOFError: Error #2030: End of file was encountered.
}
try {
trace(byteArr.readDouble());
}
catch(e:EOFError) {
trace(e); // EOFError: Error #2030: End of file was encountered.
}
}
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Sun Dec 14 2008, 10:39 PM -08:00