2009-05-20 108 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);

你一次做幾百個字節,處理你需要的任何東西,然後繼續閱讀。