Flash 逐行读取文本文件并在AS3中推送到数组
我需要AS3中的一些代码,它将逐行读取文本文件并将其插入数组。在没有任何特殊特征的情况下,这是可能的吗 sample.txtFlash 逐行读取文本文件并在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
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的问题上。一个解决方案是: