2009-05-20 53 views
10

一个数组,我需要在AS3一些代码,将线读取文本文件中的行并将其插入到一个数组。这可能没有任何特殊的字符?逐行读取和推文本文件一行在AS3

sample.txt的

car 
    van 
    scooter 
    bike 

我需要读取文件并将其插入到像数组:

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

一个解决方案是在这里:http://sangupta.com/tech/actionscript-read-text-file-line-by.html – user46688 2015-07-12 16:53:34

回答

26

像这样的东西可能工作:

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函数中的数组将包含您的项目数组。

编辑 - 为了好玩,我跑了一个样本文件中的代码和它的工作就像一个魅力。

+0

谢谢你很多Mr.kekoav ...其炒锅罚款 – vineth 2009-05-20 14:45:54

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()将字符串转换为整数。

+1

是的,但你不能将700 MB大文件读入内存!用fileStream.readUTFBytes(fileStream.bytesAvailable);你得到的文件的内容,但如果它太大,你的应用程序是死的:)我不知道如何逐行阅读文件,这就是为什么我在这里.. – 2010-11-17 12:59:04

+0

也,一些更近期版本(不知道是哪个)他们已经将`resolve'修改为`resolvePath`。 – 2012-08-06 20:26:25

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?

1

这对小文件的工作,而不是像堆积如山的文件说,防火墙或Web服务器的日志文件。

这些文件根本不会完全加载到内存中。

是否有 1的溶液/读取一个文件,直到遇到线炭的结束时,其被读 2 /过程, 3 /,然后继续进行,直到达到线/下一端文件炭的端?

我认为这将有可能使用filestream一次读取1个字节并查看它是否包含换行字符,并将该字节内容推送到数组中,直到遇到EOL字符为止,但我还没有(尚未)在AS中写足够强大而不会丢失我生命中的3个月......再加上我不太确定这个过程的速度。

有人吗?我宁愿如果您使用的是实时记录不推出一个单独的问题,因为这基本上是相同的需求,但对于更大的文件...

0

,文字更快速的产生比其他人一样以.json或.xml。但是xml和json更容易阅读和解析。

0

对于那些想了解一下大的文本文件,你可以不知道,当你阅读的换行符字节之前就会有一个换行符。我建议有一个循环,而不是读取所有字节

fileStream.readUTFBytes(fileStream。信息bytesAvailable);

你一次做几百个字节,处理你需要的任何东西,然后继续阅读。