適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: 從伺服器擷取資料...
從伺服器擷取資料...
flash.utils 

IDataInput  - AS3

套件flash.utils
介面public interface IDataInput
實作者 ByteArray, FileStream, Socket, URLStream

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

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()

檢視範例

相關 API 元素



公用屬性
 屬性定義自
  bytesAvailable : uint
[唯讀] 會傳回可在輸入緩衝區中讀取之資料的位元組數。
IDataInput
  endian : String
資料的位元組順序,會是 Endian 類別的 BIG_ENDIAN 或 LITTLE_ENDIAN 常數。
IDataInput
  objectEncoding : uint
使用 readObject() 方法來寫入或讀取二進位資料時,用來判斷使用的是 AMF3 或 AMF0 格式。
IDataInput
公用方法
 方法定義自
  
會從檔案串流、位元組串流或位元組陣列讀取 Boolean 值。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取具有正負號的位元組。
IDataInput
  
readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
從檔案串流、位元組串流或位元組陣列,讀取 length 參數所指定的資料位元組數目。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取 IEEE 754 雙精度浮點數。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取 IEEE 754 單精度浮點數。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取具有正負號的 32 位元整數。
IDataInput
  
readMultiByte(length:uint, charSet:String):String
使用指定的字元集,從檔案串流、位元組串流或位元組陣列讀取指定長度的多位元組字串。
IDataInput
  
從檔案串流、位元組串流或位元組陣列讀取物件並以 AMF 序列化格式編碼。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取具有正負號的 16 位元整數。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取無正負號的位元組。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取無正負號的 32 位元整數。
IDataInput
  
會從檔案串流、位元組串流或位元組陣列讀取無正負號的 16 位元整數。
IDataInput
  
從檔案串流、位元組串流或位元組陣列讀取 UTF-8 字串。
IDataInput
  
從位元組串流或位元組陣列讀取 UTF-8 位元組的序列,並傳回字串。
IDataInput
屬性詳細資訊

bytesAvailable

屬性
bytesAvailable:uint  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會傳回可在輸入緩衝區中讀取之資料的位元組數。 使用者程式碼必須呼叫 bytesAvailable,確定在嘗試以其中一種讀取方法進行讀取之前,具有足夠的資料。



實作
    public function get bytesAvailable():uint

endian

屬性 
endian:String

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

資料的位元組順序,會是 Endian 類別的 BIG_ENDIANLITTLE_ENDIAN 常數。



實作
    public function get endian():String
    public function set endian(value:String):void

相關 API 元素

objectEncoding

屬性 
objectEncoding:uint

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

當使用 readObject() 方法來寫入或讀取二進位資料時,用來判斷使用 AMF3 或 AMF0 格式。此值是來自於 ObjectEncoding 類別的常數。



實作
    public function get objectEncoding():uint
    public function set objectEncoding(value:uint):void

相關 API 元素

方法詳細資訊

readBoolean

()方法
public function readBoolean():Boolean

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取 Boolean 值。讀取單一位元組。若該位元組不為零,即傳回 true,否則傳回 false

傳回值
Boolean — Boolean 值,如果位元組不為零,則為 true,否則為 false

擲回值
EOFError — 沒有足夠的資料可供讀取。

readByte

()方法 
public function readByte():int

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取具有正負號的位元組。

傳回值
int — 傳回的值介於 -128 到 127 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

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

()方法 
public function readDouble():Number

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取 IEEE 754 雙精度浮點數。

傳回值
Number — IEEE 754 雙精度浮點數。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readFloat

()方法 
public function readFloat():Number

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取 IEEE 754 單精度浮點數。

傳回值
Number — IEEE 754 單精度浮點數。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readInt

()方法 
public function readInt():int

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取具有正負號的 32 位元整數。

傳回值
int — 傳回的值介於 -2147483648 到 2147483647 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

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",以及其他等等。 如需完整清單,請參閱「支援的字元集」

注意:如果目前的系統沒有辦識出 charSet 參數的值,則 Adobe® Flash® Player 或 Adobe® AIR® 會使用系統的預設字碼頁當做字元集。例如,charSet 參數的值 (如同在 myTest.readMultiByte(22, "iso-8859-01")) 使用 01 取代 1 在您的開發系統上可能是可行的,但在其他系統可能不可行。在其他系統上,Flash Player 或 AIR 執行階段將會使用系統的預設字碼頁。

傳回值
String — UTF-8 編碼字串。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readObject

()方法 
public function readObject():*

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

從檔案串流、位元組串流或位元組陣列讀取物件並以 AMF 序列化格式編碼。

傳回值
* — 經過還原序列化的物件

擲回值
EOFError — 沒有足夠的資料可供讀取。

相關 API 元素

readShort

()方法 
public function readShort():int

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取具有正負號的 16 位元整數。

傳回值
int — 傳回的值介於 -32768 到 32767 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readUnsignedByte

()方法 
public function readUnsignedByte():uint

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取無正負號的位元組。

傳回值
uint — 傳回的值介於 0 到 255 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readUnsignedInt

()方法 
public function readUnsignedInt():uint

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取無正負號的 32 位元整數。

傳回值
uint — 傳回的值介於 0 到 4294967295 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readUnsignedShort

()方法 
public function readUnsignedShort():uint

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會從檔案串流、位元組串流或位元組陣列讀取無正負號的 16 位元整數。

傳回值
uint — 傳回的值介於 0 到 65535 的範圍之間。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readUTF

()方法 
public function readUTF():String

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

從檔案串流、位元組串流或位元組陣列讀取 UTF-8 字串。會假定此字串的前置詞為無正負號的短整數,以指示以位元組為單位的長度。

這個方法類似於 Java® IDataInput 介面的 readUTF() 方法。

傳回值
String — 以位元組表示之字元所產生的 UTF-8 字串。

擲回值
EOFError — 沒有足夠的資料可供讀取。

readUTFBytes

()方法 
public function readUTFBytes(length:uint):String

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

從位元組串流或位元組陣列讀取 UTF-8 位元組的序列,並傳回字串。

參數

length:uint — 要讀取的位元組數。

傳回值
String — 指定之長度字元的位元組表示法所產生的 UTF-8 字串。

擲回值
EOFError — 沒有足夠的資料可供讀取。
DataInputExample.as

下列範例會使用 DataInputExample 類別,將 Boolean 和 pi 的雙精度浮點表示法寫入到位元組陣列。 這是透過下列步驟完成:
  1. 宣告新的 ByteArray 物件實體 byteArr
  2. 寫入 Boolean false 的位元組同等值以及 pi 的同等雙精度浮點數學值。
  3. 讀回 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.
            }
        }
    }
}




[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。