Flex:读取bytearray

时间:2010-09-27 09:39:31

标签: flex filereference

我使用以下内容将文件上传到Flex:

        private var filer:FileReference;
        protected function button1_clickHandler(event:MouseEvent):void
        {
            var fd:String = "Files (*)"; 
            var fe:String = "*"; 
            var ff:FileFilter = new FileFilter(fd, fe);
            filer = new FileReference();
            filer.addEventListener(Event.SELECT, onFileSelect);
            filer.browse(new Array(ff));
            filer.addEventListener(Event.COMPLETE, 
                function (e:Event):void {
                    e.currentTarget.data.toString();
                }
            );
        }
        private function onFileSelect(e:Event):void {
            filer.load(); 
        }

我的文件看起来像这样: alt text

以下是原始文件:http://sesija.com/up/1.txt

我需要阅读上传的文件并解析它。问题是,在我e.currentTarget.data.toString();中,我只得到'1',而不是字符串的其余部分。

关于如何成功读取整个txt文件的任何想法?

1 个答案:

答案 0 :(得分:1)

data属性为ByteArray。不使用toString方法(显然将NULL字节视为字符串的结尾),而是使用ByteArray类的特定读取方法,如readBytereadInt等。

var array:Array = [];
var ba:ByteArray = e.currentTarget.data as ByteArray;
while(ba.bytesAvailable != 0){
    array.push(ba.readByte());
}
trace(array.join(", "));

您可能需要阅读Working with byte arrays