我需要AS3中的一些代码,它们将逐行读取文本文件并将其插入到数组中。这可能没有任何特殊性质吗?
sample.txt的
car
van
scooter
bike
我需要读取文件并将其插入如下数组:
Array[0]=car
Array[1]=van
Array[2]=scooter
Array[3]=bike
答案 0 :(得分:27)
这样的事情可能有用:
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"));
onLoaded函数中的数组将包含您的项目数组。
编辑 - 为了好玩,我使用示例文件运行代码,它就像一个魅力。
答案 1 :(得分:7)
以下是使用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()将字符串转换为整数。
答案 2 :(得分:1)
var result:Array = [];
for each (var s:String in source.split(" ")) {
var a:Array = s.split("=");
result[a[0]] = a[1];
}
依靠“”分裂,真的不是一个好主意, 你不能使用JSON,CSV或XML吗?
答案 3 :(得分:1)
这适用于小文件,而不适用于像防火墙或网络服务器日志文件这样的大文件。
这些文件根本不会完全加载到内存中。
是否有解决方案 1 /读取文件,直到遇到行结束char, 2 /进程读取, 3 /然后继续直到文件的行/结束的下一个结束?
我认为有可能一次使用1个字节的文件流读取并查看它是否包含换行符,并将该字节内容推送到数组上,直到遇到EOL char,但我还不够强大足够在AS写这样的东西而不会失去3个月的生命......加上我对这个过程的速度不太确定。
任何人?我宁愿不提出一个单独的问题,因为这基本上是相同的需求,但对于更大的文件......
答案 4 :(得分:0)
如果您使用实时录制,则生成文本的速度比.json或.xml等其他文本更快。但是xml和json更容易阅读和解析。
答案 5 :(得分:0)
对于那些想知道大文本文件的人,在读取换行字节之前,你不知道什么时候会有换行符。我建议有一个循环,而不是用
读取所有字节fileStream.readUTFBytes(fileStream.bytesAvailable);
你一次做几百个字节,处理你需要的任何东西,然后继续阅读。