(仅限 AIR)
包flash.filesystem
类public class FileStream
继承FileStream Inheritance EventDispatcher Inheritance Object
实现 IDataInput, IDataOutput

运行时版本: AIR 1.0

使用 FileStream 对象读取和写入文件。通过调用 open() 方法可以同步打开文件,通过调用 openAsync() 方法可以异步打开文件。

以异步方式打开文件的好处是当 Adobe AIR 在后台运行读写过程时,可以执行其他代码。在以异步方式打开文件时,将随着操作的进行调度 progress 事件。

以同步方式打开的 File 对象其行为很类似于 ByteArray 对象;以异步方式打开的文件其行为很类似于 Socket 或 URLStream 对象。在以同步方式打开 File 对象时,当从基础文件中读取或向其中写入需要的数据时,调用方将暂停。在以异步方式打开文件时,将会立即缓冲写入到流的任何数据,然后再写入文件。

无论是以同步方式还是以异步方式从文件中读取数据,实际的读取方法都是同步的。两种情况都读取当前“可用的”数据。不同之处在于在以同步方式读取时,所有数据始终是可用的;而在以异步方式读取时,随着数据流入读取缓冲区,数据将逐渐变为可用。无论哪种方式,可以在当前时刻以同步方式读取的数据将由 bytesAvailable 属性表示。

处理异步输入的应用程序通常会注册 progress 事件并使用通过调用读取方法变为可用的数据。或者,应用程序可以通过注册 complete 事件并处理调度 complete 事件时的整个数据集,从而简单地等待所有数据变为可用。



公共属性
 属性定义方
  AIR-only bytesAvailable : uint
[只读 (read-only)] 返回可在输入缓冲区中读取的数据的字节数。
FileStream
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  AIR-only endian : String
数据的字节顺序:为 Endian 类中的 BIG_ENDIAN 或 LITTLE_ENDIAN 常量。
FileStream
  AIR-only objectEncoding : uint
指定在使用 readObject() 或 writeObject() 方法写入或读取二进制数据时是使用 AMF3 格式还是 AMF0 格式。
FileStream
  AIR-only position : Number
文件中的当前位置。
FileStream
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  AIR-only readAhead : Number
异步读取文件时请求的数据量。
FileStream
公共方法
 方法定义方
  
创建 FileStream 对象。
FileStream
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
关闭 FileStream 对象。
FileStream
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
AIR-only open(file:File, fileMode:String):void
以同步方式打开 FileStream 对象,指向由 file 参数指定的文件。
FileStream
  
AIR-only openAsync(file:File, fileMode:String):void
以异步方式打开 FileStream 对象,指向由 file 参数指定的文件。
FileStream
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
从文件流、字节流或字节数组中读取布尔值。
FileStream
  
从文件流、字节流或字节数组中读取带符号的字节。
FileStream
  
AIR-only readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从文件流、字节流或字节数组中读取 length 参数指定的数据字节数。
FileStream
  
从文件流、字节流或字节数组中读取 IEEE 754 双精度浮点数。
FileStream
  
从文件流、字节流或字节数组中读取 IEEE 754 单精度浮点数。
FileStream
  
从文件流、字节流或字节数组中读取带符号的 32 位整数。
FileStream
  
AIR-only readMultiByte(length:uint, charSet:String):String
使用指定的字符集从文件流、字节流或字节数组中读取指定长度的多字节字符串。
FileStream
  
从文件流、字节流或字节数组中读取以 AMF 序列化格式编码的对象。
FileStream
  
从文件流、字节流或字节数组中读取带符号的 16 位整数。
FileStream
  
从文件流、字节流或字节数组中读取无符号的字节。
FileStream
  
从文件流、字节流或字节数组中读取无符号的 32 位整数。
FileStream
  
从文件流、字节流或字节数组中读取无符号的 16 位整数。
FileStream
  
从文件流、字节流或字节数组中读取 UTF-8 字符串。
FileStream
  
从字节流或字节数组中读取包含 个字节的 UTF-8 字节序列,并返回一个字符串。
FileStream
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
在 FileStream 对象的 position 属性指定的位置截断文件。
FileStream
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
  
写入布尔值。
FileStream
  
AIR-only writeByte(value:int):void
写入一个字节。
FileStream
  
AIR-only writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
在指定的字节数组、字节中,从偏移量(使用从零开始的索引)指定的字节开始,向文件流、字节流或字节数组中写入一个长度由 length 指定的字节序列。
FileStream
  
写入 IEEE 754 双精度(64 位)浮点数。
FileStream
  
写入 IEEE 754 单精度(32 位)浮点数。
FileStream
  
AIR-only writeInt(value:int):void
写入一个带符号的 32 位整数。
FileStream
  
AIR-only writeMultiByte(value:String, charSet:String):void
使用指定的字符集将多字节字符串写入文件流、字节流或字节数组中。
FileStream
  
AIR-only writeObject(object:*):void
以 AMF 序列化格式将对象写入文件流、字节流或字节数组中。
FileStream
  
写入一个 16 位整数。
FileStream
  
写入一个无符号的 32 位整数。
FileStream
  
将 UTF-8 字符串写入文件流、字节流或字节数组中。
FileStream
  
写入一个 UTF-8 字符串。
FileStream
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  指示 close() 方法的显式调用已关闭流。FileStream
  指出已到达流末尾。FileStream
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  指示在异步文件 I/O 操作期间发生错误。FileStream
  指出已将缓冲数据写入文件。FileStream
  指出流上有可用的新数据。FileStream
属性详细信息
AIR-only bytesAvailable属性
bytesAvailable:uint  [只读 (read-only)]

运行时版本: AIR 1.0

返回可在输入缓冲区中读取的数据的字节数。在尝试使用某一种读取方法读取数据之前,用户代码必须调用 bytesAvailable 以确保有足够的数据可用。



实现
    public function get bytesAvailable():uint
AIR-only endian属性 
endian:String  [读写]

运行时版本: AIR 1.0

数据的字节顺序:为 Endian 类中的 BIG_ENDIAN 或 LITTLE_ENDIAN 常量。



实现
    public function get endian():String
    public function set endian(value:String):void
AIR-only objectEncoding属性 
objectEncoding:uint  [读写]

运行时版本: AIR 1.0

指定在使用 readObject() 或 writeObject() 方法写入或读取二进制数据时是使用 AMF3 格式还是 AMF0 格式。

该值为 ObjectEncoding 类中的常数。在默认情况下使用 AMF3 格式。



实现
    public function get objectEncoding():uint
    public function set objectEncoding(value:uint):void

另请参见

AIR-only position属性 
position:Number  [读写]

运行时版本: AIR 1.0

文件中的当前位置。

此值可以按以下任一方式进行修改:

该位置定义为一个数字(而不是单位),以支持长度大于 232 字节的文件。此属性的值始终是一个小于 253 的整数。如果将此值设置为带有小数部分的数字,则会将此值舍入到最接近的整数。

在异步读取文件时,如果设置了 position 属性,应用程序将开始用从指定位置开始的数据填充读取缓冲区,而 bytesAvailable 属性可以设置为 0。在使用一种读取方法读取数据前等待 complete 事件;或在使用一种读取方法前等待 progress 事件并检查 bytesAvailable 属性。



实现
    public function get position():Number
    public function set position(value:Number):void

示例
下面的代码显示应用程序从文件读取数据时,FileStream 对象的 position 属性如何更新。
import flash.fileSystem.*;
import flash.utils.ByteArray;
import flash.events.Event;

var sourceFile:File = File.documentsDirectory.resolvePath("Apollo Test/test.txt");
var stream:FileStream = new FileStream();
stream.addEventListener(Event.COMPLETE, readBytes);
stream.openAsync(sourceFile, File);

function readBytes(e:Event):void {
    var bytes:ByteArray = new ByteArray();
    trace("position 0:", stream.position); // 0
    bytes[0] = stream.readByte();
    trace("position 1:", stream.position); // 1
    fileStream.readBytes(bytes, stream.position, 4); 
    trace("position 2:", stream.position); // 5
    stream.close();
}
AIR-only readAhead属性 
readAhead:Number  [读写]

运行时版本: AIR 1.0

异步读取文件时请求的数据量。

此属性指定异步流在当前位置以外尝试读取多少数据。此属性的默认值为无穷大:默认情况下,为执行异步读取而打开的文件一直读取到该文件的末尾。

从读取缓冲区读取数据不会更改 readAhead 属性的值。在从缓冲区读取数据时,会读入新数据以重新填充读取缓冲区。

readAhead 属性对以同步方式打开的文件不起作用。

由于数据是以异步方式读取的,因此 FileStream 对象将调度 事件. 在 progress 事件的事件处理函数方法中,查看所需的字节数是否可用(通过检查 bytesAvailable 属性),然后通过使用一种读取方法从读取缓冲区读取数据。



实现
    public function get readAhead():Number
    public function set readAhead(value:Number):void

示例
下面的代码显示如何使用 readAhead 属性将读入一个文件的数据量限制为 100 个字节:
import flash.filesystem.*;

var file:File = File.desktopDirectory.resolvePath("test.txt");
var fileStream:FileStream = new FileStream();
fileStream.readAhead = 100;
fileStream.addEventListener(ProgressEvent.PROGRESS, readProgressHandler)
fileStream.openAsync(file, FileMode.READ);
var results:ByteArray;

function readProgressHandler(event:ProgressEvent):void {
    if (fileStream.bytesAvailable >= 100) {
        fileStream.readBytes(results, 0, 100);
    }
}
构造函数详细信息
AIR-only FileStream()构造函数
public function FileStream()

运行时版本: AIR 1.0

创建 FileStream 对象。使用 open() 或 openAsync() 方法打开文件。

另请参见

方法详细信息
AIR-only close()方法
public function close():void

运行时版本: AIR 1.0

关闭 FileStream 对象。

在调用 close() 方法后将无法读取或写入任何数据。如果以异步方式打开该文件(FileStream 对象使用 openAsync() 方法打开该文件),则调用 close() 方法将导致该对象调度 close 事件。

关闭应用程序将自动关闭与该应用程序中的 FileStream 对象相关联的所有文件。不过,最好在关闭应用程序之前,对以异步方式打开并具有要写入的未处理数据的所有 FileStream 对象注册 closed 事件(以确保写入数据)。

通过调用 open() 或 openAsync() 方法可以重复使用 FileStream 对象。这将关闭与 FileStream 对象相关联的任何文件,但该对象不会调度 close 事件。

对于以异步方式打开的 FileStream 对象(使用 openAsync() 方法),即使为 FileStream 对象调用了 close() 事件并删除了引用该对象的属性和变量,只要有尚未完成操作,并且为操作的完成注册了事件处理函数,就不会将 FileStream 对象作为垃圾回收。特别是,只要以下情况之一仍然可能存在,就会永久保持未引用的 FileStream 对象:


事件
close:Event — 以异步方式打开的文件已关闭。

另请参见


示例

下面的代码以异步方式打开 FileStream 对象并将一个名为 test.txt 的文本文件写入到用户文档目录的 Apollo Test 子目录中。调用 FileStream 对象的 close() 方法将在写入数据后关闭该文件。
import flash.filesystem.*;
import flash.events.Event;
            
var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.openAsync(file, FileMode.WRITE);
fileStream.writeUTFBytes("Hello");
fileStream.addEventListener(Event.CLOSE, fileClosed);
fileStream.close();

function fileClosed(event:Event):void {
    trace("closed");
}

下面的代码以同步方式打开 FileStream 对象并将一个名为 test.txt 的文本文件写入到用户文档目录的 Apollo Test 子目录中。调用 FileStream 对象的 close() 方法将在写入数据后关闭该文件。
import flash.filesystem.*;
            
var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeUTF("Hello");
fileStream.close();
AIR-only open()方法 
public function open(file:File, fileMode:String):void

运行时版本: AIR 1.0

以同步方式打开 FileStream 对象,指向由 file 参数指定的文件。

如果 FileStream 对象已打开,则调用此方法将在打开文件前关闭文件,且不会为以前打开的文件传送任何进一步事件(包括 close)。

在支持文件锁定的系统中,在“写入”或“更新”模式(FileMode.WRITE 或 FileMode.UPDATE)下打开的文件在关闭前将是不可读的。

参数

file:File — 指定要打开的文件的 File 对象。
 
fileMode:String — FileMode 类中的一个字符串,用于定义 FileStream 的功能(如读取或写入文件的功能)。


引发
IOError — 文件不存在;您没有足够的权限打开该文件;您正在打开文件以进行读取访问,但您没有读取权限;或您正在打开文件以进行写入访问,但您没有写入权限。
 
SecurityError — 文件位置位于应用程序目录中,并将 fileMode 参数设置为“追加”、“更新”或“写入”模式。

另请参见


示例

下面的代码显示如何同步打开用户文档目录的 Apollo Test 子目录中的 test.txt 文件,然后使用系统字符集作为文本编码将该文件读入到一个字符串中。
import flash.filesystem.*;

var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var str:String = fileStream.readMultiByte(file.size, File.systemCharset);
trace(str);
fileStream.close();
AIR-only openAsync()方法 
public function openAsync(file:File, fileMode:String):void

运行时版本: AIR 1.0

以异步方式打开 FileStream 对象,指向由 file 参数指定的文件。

如果 FileStream 对象已打开,则调用此方法将在打开文件前关闭文件,且不会为以前打开的文件传送任何进一步事件(包括 close)。

如果 fileMode 参数设置为 FileMode.READ 或 FileMode.UPDATE,则文件一经打开,AIR 就会将数据读入到输入缓冲区中,并在将数据读入到输入缓冲区时调度 progress 和 open 事件。

在支持文件锁定的系统中,在“写入”或“更新”模式(FileMode.WRITE 或 FileMode.UPDATE)下打开的文件在关闭前将是不可读的。

参数

file:File — 指定要打开的文件的 File 对象。
 
fileMode:String — FileMode 类中的一个字符串,用于定义 FileStream 的功能(如读取或写入文件的功能)。


事件
ioError:IOErrorEvent — 文件不存在;您没有足够的权限打开该文件;您正在打开文件以进行读取访问,但您没有读取权限;或您正在打开文件以进行写入访问,但您没有写入权限。
 
progress:ProgressEvent — 在将数据读入到输入缓冲区时调度。(文件必须在 fileMode 参数设置为 FileMode.READ 或 FileMode.UPDATE 的情况下打开。)
 
complete:Event — 已将文件数据读入到输入缓冲区。(文件必须在 fileMode 参数设置为 FileMode.READ 或 FileMode.UPDATE 的情况下打开。)

引发
SecurityError — 文件位置位于应用程序目录中,并将 fileMode 参数设置为“追加”、“更新”或“写入”模式。

另请参见


示例

下面的代码显示如何异步打开用户文档目录的 Apollo Test 子目录中的 test.txt 文件,然后使用系统字符集作为文本编码将该文件读入到一个字符串中。
import flash.filesystem.*;
import flash.events.Event;

var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, fileCompleteHandler)
fileStream.openAsync(file, FileMode.READ);

function fileCompleteHandler(event:Event):void {
    var str:String = fileStream.readMultiByte(fileStream.bytesAvailable, File.systemCharset);
    trace(str);
    fileStream.close();
}
AIR-only readBoolean()方法 
public function readBoolean():Boolean

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取布尔值。读取单个字节,如果字节非零,则返回 true,否则返回 false。

返回
Boolean — 一个布尔值,如果字节不为零,则为 true,否则为 false。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readByte()方法 
public function readByte():int

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取带符号的字节。

返回
int — 返回值的范围是从 -128 到 127。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readBytes()方法 
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取 length 参数指定的数据字节数。将从 offset 指定的位置开始,将字节读入 bytes 参数指定的 ByteArray 对象。

参数

bytes:ByteArray — 要将数据读入的 ByteArray 对象。
 
offset:uint (default = 0) — bytes 参数中的偏移,应从该位置开始读取数据。
 
length:uint (default = 0) — 要读取的字节数。默认值 0 导致读取所有可用的数据。


事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readDouble()方法 
public function readDouble():Number

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取 IEEE 754 双精度浮点数。

返回
Number — 一个 IEEE 754 双精度浮点数。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readFloat()方法 
public function readFloat():Number

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取 IEEE 754 单精度浮点数。

返回
Number — 一个 IEEE 754 单精度浮点数。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readInt()方法 
public function readInt():int

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取带符号的 32 位整数。

返回
int — 返回值的范围是从 -2147483648 到 2147483647。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readMultiByte()方法 
public function readMultiByte(length:uint, charSet:String):String

运行时版本: AIR 1.0

使用指定的字符集从文件流、字节流或字节数组中读取指定长度的多字节字符串。

参数

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 运行时将使用系统的默认代码页。

返回
String — UTF-8 编码的字符串。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。

另请参见

AIR-only readObject()方法 
public function readObject():*

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取以 AMF 序列化格式编码的对象。

返回
* — 反序列化的对象

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。

另请参见

AIR-only readShort()方法 
public function readShort():int

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取带符号的 16 位整数。

返回
int — 返回值的范围是从 -32768 到 32767。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readUnsignedByte()方法 
public function readUnsignedByte():uint

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取无符号的字节。

返回
uint — 返回值的范围是从 0 到 255。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readUnsignedInt()方法 
public function readUnsignedInt():uint

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取无符号的 32 位整数。

返回
uint — 返回值的范围是从 0 到 4294967295。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readUnsignedShort()方法 
public function readUnsignedShort():uint

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取无符号的 16 位整数。

返回
uint — 返回值的范围是从 0 到 65535。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readUTF()方法 
public function readUTF():String

运行时版本: AIR 1.0

从文件流、字节流或字节数组中读取 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度)。

此方法类似于 Java ® IDataInput 接口中的 readUTF() 方法。

返回
String — 由字符的字节表示形式生成的 UTF-8 字符串。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only readUTFBytes()方法 
public function readUTFBytes(length:uint):String

运行时版本: AIR 1.0

从字节流或字节数组中读取包含 个字节的 UTF-8 字节序列,并返回一个字符串。

参数

length:uint — 要读取的字节数。

返回
String — 由指定长度字符的字节表示形式生成的 UTF-8 字符串。

事件
ioError:IOErrorEvent — 无法读取文件或文件未打开。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用读取功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法读取该文件(例如因为缺少该文件)。
 
EOFError — 为读取数据而指定的位置超过了可用的字节数(由 bytesAvailable 属性指定)。
AIR-only truncate()方法 
public function truncate():void

运行时版本: AIR 1.0

在 FileStream 对象的 position 属性指定的位置截断文件。

删除从 position 属性指定的位置到文件末尾之间的字节。必须打开文件以进行写入。


引发
IllegalOperationError — 文件未打开,无法写入。

另请参见


示例

下面的代码以同步方式打开用户文档目录的 Apollo Test 子目录中的 test.txt 文件,如果该文件的长度大于 100 个字符,则将其长度修剪为 100 个字符。
import flash.filesystem.*;

var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.UPDATE);
if (file.size > 100) {
    fileStream.position = 100;
    fileStream.truncate();
}
fileStream.close();

下面的代码以异步方式打开用户文档目录的 Apollo Test 子目录中的 test.txt 文件,如果该文件的长度大于 100 个字符,则将其长度修剪为 100 个字符。
var file:File = File.documentsDirectory;
file = file.resolvePath("Apollo Test/test.txt");
var fileStream:FileStream = new FileStream();
fileStream.openAsync(file, FileMode.UPDATE);
trace("start", file.size)
if (file.size > 100) {
    fileStream.position = 100;
    fileStream.truncate();
}
fileStream.addEventListener(Event.CLOSE, fileClosed);
fileStream.close();
function fileClosed(event:Event):void {
    trace("closed", file.size); 
}
AIR-only writeBoolean()方法 
public function writeBoolean(value:Boolean):void

运行时版本: AIR 1.0

写入布尔值。根据 value 参数写入单个字节。如果为 true,则写入 1,如果为 false,则写入 0。

参数

value:Boolean — 确定写入哪个字节的布尔值。如果该参数为 true,则写入 1;如果为 false,则写入 0。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeByte()方法 
public function writeByte(value:int):void

运行时版本: AIR 1.0

写入一个字节。使用了该参数的低 8 位;忽略了高 24 位。

参数

value:int — 一个整型字节值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeBytes()方法 
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void

运行时版本: AIR 1.0

在指定的字节数组、字节中,从偏移量(使用从零开始的索引)指定的字节开始,向文件流、字节流或字节数组中写入一个长度由 length 指定的字节序列。

如果省略 length 参数,则使用默认长度 0 并从 offset 开始写入整个缓冲区。如果还省略了 offset 参数,则写入整个缓冲区。

如果 offset 或 length 参数超出范围,它们将被锁定到 bytes 数组的开头和结尾。

参数

bytes:ByteArray — 要写入的字节数组。
 
offset:uint (default = 0) — 从零开始的索引,指定在数组中开始写入的位置。
 
length:uint (default = 0) — 一个无符号整数,指定在缓冲区中的写入范围。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeDouble()方法 
public function writeDouble(value:Number):void

运行时版本: AIR 1.0

写入 IEEE 754 双精度(64 位)浮点数。

参数

value:Number — 双精度(64 位)浮点数。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeFloat()方法 
public function writeFloat(value:Number):void

运行时版本: AIR 1.0

写入 IEEE 754 单精度(32 位)浮点数。

参数

value:Number — 单精度(32 位)浮点数。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeInt()方法 
public function writeInt(value:int):void

运行时版本: AIR 1.0

写入一个带符号的 32 位整数。

参数

value:int — 一个带符号的整型字节值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeMultiByte()方法 
public function writeMultiByte(value:String, charSet:String):void

运行时版本: AIR 1.0

使用指定的字符集将多字节字符串写入文件流、字节流或字节数组中。

参数

value:String — 要写入的字符串值。
 
charSet:String — 指示要使用的字符集的字符串。可能的字符集字符串包括 "shift-jis"、"cn-gb"、"iso-8859-1"”等。有关完整列表,请参阅Supported Character Sets。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。

另请参见

AIR-only writeObject()方法 
public function writeObject(object:*):void

运行时版本: AIR 1.0

以 AMF 序列化格式将对象写入文件流、字节流或字节数组中。

参数

object:* — 要进行序列化处理的对象。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。

另请参见

AIR-only writeShort()方法 
public function writeShort(value:int):void

运行时版本: AIR 1.0

写入一个 16 位整数。使用了该参数的低 16 位;忽略了高 16 位。

参数

value:int — 一个整型字节值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeUnsignedInt()方法 
public function writeUnsignedInt(value:uint):void

运行时版本: AIR 1.0

写入一个无符号的 32 位整数。

参数

value:uint — 一个无符号的整型字节值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeUTF()方法 
public function writeUTF(value:String):void

运行时版本: AIR 1.0

将 UTF-8 字符串写入文件流、字节流或字节数组中。先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节。

参数

value:String — 要写入的字符串值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
AIR-only writeUTFBytes()方法 
public function writeUTFBytes(value:String):void

运行时版本: AIR 1.0

写入一个 UTF-8 字符串。类似于 writeUTF(),但不使用 16 位长度的词为字符串添加前缀。

参数

value:String — 要写入的字符串值。


事件
ioError:IOErrorEvent — 无法写入到该文件(例如因为缺少该文件)。仅对为进行异步操作而打开的文件(使用 openAsync() 方法)调度此事件。

引发
IOError — 文件尚未打开;文件已打开,但不是使用写入功能打开的;或对于已经打开以进行同步操作的文件(使用 open() 方法),无法写入该文件(例如因为缺少该文件)。
事件详细信息
AIR-only close 事件
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.CLOSE

运行时版本: AIR 1.0

指示 close() 方法的显式调用已关闭流。

Event.CLOSE 常量定义 close 事件对象的 type 属性的值。

此事件具有以下属性:

属性值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已关闭其连接的对象。

另请参见

AIR-only complete 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.COMPLETE

运行时版本: AIR 1.0

指出已到达流末尾。

Event.COMPLETE 常量定义 complete 事件对象的 type 属性值。

此事件具有以下属性:

属性值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已完成加载的网络对象。

另请参见

AIR-only ioError 事件  
事件对象类型: flash.events.IOErrorEvent
属性 IOErrorEvent.type = flash.events.IOErrorEvent.IO_ERROR

运行时版本: AIR 1.0

指示在异步文件 I/O 操作期间发生错误。

定义 ioError 事件对象的 type 属性值。

此事件具有以下属性:

属性值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
errorID 与特定错误关联的引用编号(仅限 AIR)。
target 发生输入/输出错误的网络对象。
text 要显示为错误消息的文本。
AIR-only outputProgress 事件  
事件对象类型: flash.events.OutputProgressEvent
属性 OutputProgressEvent.type = flash.events.OutputProgressEvent.OUTPUT_PROGRESS

运行时版本: AIR 1.0

指出已将缓冲数据写入文件。

定义 outputProgress 事件对象的 type 属性值。

此事件具有以下属性:

属性值
bubbles false
bytesPending 在侦听器处理该事件时要写入的剩余字节数。
bytesTotal 写入进程成功时最终将写入的总字节数。
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 报告进度的 FileStream 对象。
AIR-only progress 事件  
事件对象类型: flash.events.ProgressEvent
属性 ProgressEvent.type = flash.events.ProgressEvent.PROGRESS

运行时版本: AIR 1.0

指出流上有可用的新数据。

定义 progress 事件对象的 type 属性值。

此事件具有以下属性:

属性值
bubbles false
bytesLoaded 在侦听器处理事件时加载的项数或字节数。
bytesTotal 如果加载进程成功,最终将加载的项目或字节总数。
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 报告进度的 对象。