套件 | 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 |
公用方法
方法 | 定義自 | ||
---|---|---|---|
會從檔案串流、位元組串流或位元組陣列讀取 Boolean 值。 | 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
參數所指定的資料位元組數目。這些位元組會讀入由 bytes
參數指定的 ByteArray 物件中,從 offset
所指定的位置開始。
參數
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
類別,將 Boolean 和 pi 的雙精度浮點表示法寫入到位元組陣列。 這是透過下列步驟完成:
- 宣告新的 ByteArray 物件實體
byteArr
。 - 寫入 Boolean
false
的位元組同等值以及 pi 的同等雙精度浮點數學值。 - 讀回 Boolean 值及雙精度浮點數。
請注意程式碼區段會如何加入到結尾來檢查是否有檔案結尾錯誤,以確保不會讀取超過位元組串流結尾的資料。
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, 03:47 PM Z