包 | flash.utils |
接口 | public interface IDataInput |
实现器 | ByteArray, FileStream, Socket, URLStream |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
默认情况下,所有 IDataInput 和 IDataOutput 操作均为“bigEndian”(序列中的最高有效字节存储在最低或第一个存储地址),而且都不分块。如果可用数据不足,则会引发 EOFError
异常。使用 IDataInput.bytesAvailable
属性来确定可供读取的数据有多少。
符号扩展名仅在读取数据时有效,写入数据时无效。因此,无需单独的写入方法就可以使用 IDataInput.readUnsignedByte()
和 IDataInput.readUnsignedShort()
。换言之:
- 将
IDataOutput.writeByte()
与IDataInput.readUnsignedByte()
和IDataInput.readByte()
一起使用。 - 将
IDataOutput.writeShort()
与IDataInput.readUnsignedShort()
和IDataInput.readShort()
一起使用。
相关 API 元素
公共属性
属性 | 由以下参数定义 | ||
---|---|---|---|
bytesAvailable : uint [只读]
返回可在输入缓冲区中读取的数据的字节数。 | IDataInput | ||
endian : String
数据的字节顺序:为 Endian 类中的 BIG_ENDIAN 或 LITTLE_ENDIAN 常量。 | IDataInput | ||
objectEncoding : uint
用于确定在使用 readObject() 方法写入或读取二进制数据时是使用 AMF3 格式还是 AMF0 格式。 | IDataInput |
公共方法
方法 | 由以下参数定义 | ||
---|---|---|---|
从文件流、字节流或字节数组中读取布尔值。 | IDataInput | ||
从文件流、字节流或字节数组中读取带符号的字节。 | IDataInput | ||
从文件流、字节流或字节数组中读取 length 参数指定的数据字节数。 | IDataInput | ||
从文件流、字节流或字节数组中读取 IEEE 754 双精度浮点数。 | IDataInput | ||
从文件流、字节流或字节数组中读取 IEEE 754 单精度浮点数。 | IDataInput | ||
从文件流、字节流或字节数组中读取带符号的 32 位整数。 | IDataInput | ||
使用指定的字符集从文件流、字节流或字节数组中读取指定长度的多字节字符串。 | IDataInput | ||
readObject():*
从文件流、字节流或字节数组中读取以 AMF 序列化格式编码的对象。 | IDataInput | ||
从文件流、字节流或字节数组中读取带符号的 16 位整数。 | IDataInput | ||
从文件流、字节流或字节数组中读取无符号的字节。 | IDataInput | ||
从文件流、字节流或字节数组中读取无符号的 32 位整数。 | IDataInput | ||
从文件流、字节流或字节数组中读取无符号的 16 位整数。 | IDataInput | ||
从文件流、字节流或字节数组中读取 UTF-8 字符串。 | IDataInput | ||
从字节流或字节数组中读取 UTF-8 字节序列,并返回一个字符串。 | IDataInput |
属性详细信息
bytesAvailable | 属性 |
endian | 属性 |
objectEncoding | 属性 |
方法详细信息
readBoolean | () | 方法 |
readByte | () | 方法 |
readBytes | () | 方法 |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
从文件流、字节流或字节数组中读取 length
参数指定的数据字节数。将从 offset
指定的位置开始,将字节读入 bytes
参数指定的 ByteArray 对象。
参数
bytes:ByteArray — 要将数据读入的 ByteArray 对象。
| |
offset:uint (default = 0 ) — bytes 参数中的偏移,应从该位置开始读取数据。
| |
length:uint (default = 0 ) — 要读取的字节数。默认值 0 导致读取所有可用的数据。
|
引发
EOFError — 没有足够的数据可供读取。
|
readDouble | () | 方法 |
readFloat | () | 方法 |
readInt | () | 方法 |
readMultiByte | () | 方法 |
public function readMultiByte(length:uint, charSet:String):String
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
使用指定的字符集从文件流、字节流或字节数组中读取指定长度的多字节字符串。
参数
length:uint — 要从字节流中读取的字节数。
| |
charSet:String — 表示用于解释字节的字符集的字符串。可能的字符集字符串包括 "shift-jis" 、"cn-gb" 、"iso-8859-1" 等。有关完整列表,请参阅支持的字符集。
注意:如果当前系统无法识别 |
String — UTF-8 编码的字符串。
|
引发
EOFError — 没有足够的数据可供读取。
|
readObject | () | 方法 |
readShort | () | 方法 |
readUnsignedByte | () | 方法 |
readUnsignedInt | () | 方法 |
readUnsignedShort | () | 方法 |
readUTF | () | 方法 |
readUTFBytes | () | 方法 |
示例 如何使用本示例
DataInputExample.as
以下示例使用
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. } } } }
Tue Jun 12 2018, 11:04 AM Z