2009-05-20 29 views
10

テキストファイルを1行ずつ読み込んで配列に挿入するコードがAS3に必要です。特別なキャラクターを持たなくても可能ですか?このような何かが動作する可能性がありテキストファイルを1行ずつ読み込み、AS3の配列にプッシュ

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

1つの解決策はここにあります:http://sangupta.com/tech/actionscript-read-text-file-line-by.html – user46688

答えて

26

::私は、ファイルを読み込むなど、配列に挿入する必要が

にsample.txt

car 
    van 
    scooter 
    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")); 

onLoaded関数の配列には、項目の配列があります。

編集 - 楽しく、サンプルファイルでコードを実行し、魅力的に機能しました。ここで

+0

u lot Mr.kekoav ...ありがとうございました。その良いwoks – vineth

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)を使用します。あなたはファイルの内容を取得しますが、大きすぎるとアプリケーションは死んでいます。私は行単位でファイルを読む方法も知らないので、私はここにいるのです。 –

+0

また、彼らが 'resolve'を' resolve'に変更したかどうかはわかりません。 –

1

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を使用することができます:私は意味 、あなたは、このようにそれを行うことができますか?

1

これは、ファイアウォールやウェブサーバーのログファイルのような膨大なファイルではなく、小さなファイルに対して有効です。

これらのファイルは、まったくメモリに完全にロードされません。

1 /あなたはライン文字の最後に遭遇するまで、読み込まれ 2 /プロセスをファイルを読む 3 /し、ファイルの文字の行/最後の次の終わりまで続くの解が存在します?

一度に1バイトずつ読み込み、改行文字が含まれているかどうかを確認し、そのバイト内容をEOL charに遭遇するまで配列にプッシュすることができますが、私の人生の3ヶ月を失うことなく、そのようなことを書くのに十分なほど強力です...さらに、私はプロセスのスピードについてあまりよく分かりません。

誰でも?私は、これと本質的に同じ要求として別のファイルを起動したくないのですが、大きなファイルについては...

+0

良い質問、私はそれが自分の話題であるべきだと思う、あなたが解決策を見つけた場合はそれを共有してください。 Thx – simion314

+0

いいえ、申し訳ありません。実際にはflexを使用しなくなりました。私はちょうど数行のコードを使って上記を正確に行うことができるPythonに慣れています。フレックスで私はつまらない仕事と余分な仕事にぶち当たっていたので、結局私はpythonを使い始めました。 –

0

リアルタイム録画を使用している場合、テキストは.jsonや.xmlなどの他のものよりも高速です。しかし、xmlとjsonは読みやすく、解析するのがより簡単です。

0

大規模なテキストファイルについて疑問に思っている人は、改行バイトが読み込まれる前に改行があるかどうかを知ることはできません。私が提案しているのは、すべてのバイトを読み取る代わりにループを持つことです。

fileStream.readUTFBytes(fileStream。bytesAvailable);

一度に数百バイトを処理し、必要な処理をしてから、読み込みを続けます。

関連する問題