Flash 逐行读取文本文件并在AS3中推送到数组

Flash 逐行读取文本文件并在AS3中推送到数组,flash,actionscript-3,Flash,Actionscript 3,我需要AS3中的一些代码,它将逐行读取文本文件并将其插入数组。在没有任何特殊特征的情况下,这是可能的吗 sample.txt car van scooter bike 我需要读取文件并将其插入数组,如: Array[0]=car Array[1]=van Array[2]=scooter Array[3]=bike 类似的方法可能会奏效: var myTextLoader:URLLoader = new URLLoader(); myTextLoader.a

我需要AS3中的一些代码,它将逐行读取文本文件并将其插入数组。在没有任何特殊特征的情况下,这是可能的吗

sample.txt

    car
    van
    scooter
    bike
我需要读取文件并将其插入数组,如:

Array[0]=car
Array[1]=van
Array[2]=scooter
Array[3]=bike

类似的方法可能会奏效:

var myTextLoader:URLLoader = new URLLoader();

myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void {
    var myArrayOfLines:Array = e.target.data.split(/\n/);
}

myTextLoader.load(new URLRequest("myText.txt"));
onload函数中的数组将包含您的项数组


编辑-为了好玩,我用一个示例文件运行了代码,它工作得很好。

下面是一个使用ActionScript 3加载和读取不同文件类型的示例:

      import flash.filesystem.FileMode;
      import flash.filesystem.FileStream;
      import flash.filesystem.File;

      var myFile:File = File.appResourceDirectory; // Create out file object and tell our File Object where to look for the file
      myFile = myFile.resolve("mySampleFile.txt"); // Point it to an actual file

      var fileStream:FileStream = new FileStream(); // Create our file stream
      fileStream.open(myFile, FileMode.READ);

      var fileContents:String = fileStream.readUTFBytes(fileStream.bytesAvailable); // Read the contens of the 
      fileContents_txt.text = fileContents; // Display the contents. I've created a TextArea on the stage for display

      fileStream.close(); // Clean up and close the file stream

读取字符串后,可以使用int.valueOf()将字符串转换为整数。

hmmm,使用空格作为分隔符确实有点奇怪。 我是说,你可以这样做:

var result:Array = [];
for each (var s:String in source.split(" ")) {
     var a:Array = s.split("=");
     result[a[0]] = a[1];
}
但靠"分裂"真的不是好主意,,
您不能使用JSON、CSV或XML吗?

这将适用于小文件,而不是像防火墙或Web服务器日志文件这样的大文件

这些文件根本无法完全加载到内存中

有解决问题的办法吗 1/读取文件,直到遇到行尾字符, 2/处理读取的数据, 3/然后继续,直到下一行结束/文件字符结束

我认为可以使用filestream一次读取1个字节,并查看它是否包含换行符,然后将该字节内容推送到数组中,直到遇到EOL字符,但我(还)没有足够的能力在不失去3个月生命的情况下编写这样的内容。。。另外,我对这个过程的速度也不是很确定


有人吗?我不想提出一个单独的问题,因为这基本上是相同的需求,但对于更大的文件…

如果您使用实时录制,文本生成速度比其他文件(如.json或.xml)更快。但是xml和json更易于阅读和解析。

对于那些想知道大型文本文件的人来说,在读取换行字节之前,你无法知道何时会出现换行。我建议使用一个循环来代替使用

fileStream.readUTFBytes(fileStream.bytesAvailable)


一次执行几百个字节,处理所需的任何内容,然后继续读取。

是的,但无法将700 MB的大文件读入内存!使用fileStream.readUTFBytes(fileStream.bytesAvailable);你得到了文件的内容,但是如果文件太大,你的应用程序就死了:)我也不知道如何逐行读取文件,这就是我来这里的原因。。另外,对于一些更新的版本(不确定是哪个版本),他们已经将
resolve
修改为
resolvePath
。好问题,我认为它应该有自己的主题,你找到解决方案了吗?如果是,请分享。ThxNo对不起,我实际上已经停止使用flex了——我已经习惯了Python,在Python中,我只需几行代码就可以完成上面的工作。在使用flex时,我不断遇到一些问题和额外的工作,因此最后我又回到了使用python的问题上。一个解决方案是: