2009-05-20 16 views
10

में किसी सरणी पर धक्का देना मुझे एएस 3 में कुछ कोड चाहिए जो लाइन द्वारा एक टेक्स्ट फ़ाइल लाइन पढ़ेगा और उसे सरणी में डालेगा। क्या यह कोई विशेष चरित्र के बिना संभव है?लाइन फ़ाइल लाइन को लाइन से पढ़ना और एएस 3

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

उत्तर

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")); 

ऑनलोडेड फ़ंक्शन में सरणी में आपके आइटम की सरणी होगी।

संपादित करें- मज़े के लिए, मैंने नमूना फ़ाइल के साथ कोड चलाया और यह एक आकर्षण की तरह काम करता था।

 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() का उपयोग कर सकते पूर्णांक तक स्ट्रिंग परिवर्तित करने के लिए:

+0

बहुत धन्यवाद श्रीकेकोव ... इसके woks ठीक – vineth

7

यहाँ लोड हो रहा है और वे ActionScript 3 के साथ विभिन्न फ़ाइल प्रकारों को पढ़ने का एक उदाहरण है।

+1

हाँ, लेकिन आप नहीं कर सकते मेमोरी में 700 एमबीईटी बड़ी फाइल पढ़ें! FileStream.readUTFBytes (fileStream.bytes उपलब्ध) के साथ; आपको फ़ाइल की सामग्री मिलती है, लेकिन यदि यह बहुत बड़ा है, तो आप एप्लिकेशन मर चुके हैं :) मुझे नहीं पता कि लाइन लाइन से फ़ाइल लाइन को कैसे पढ़ा जाए, यही कारण है कि मैं यहाँ हूं .. –

+0

कुछ और हाल ही में संस्करण (सुनिश्चित नहीं है कि) उन्होंने 'हल करें' को 'हल करें' में संशोधित किया है। –

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

यह छोटी फ़ाइलों के लिए काम करेगा, न कि फायरवॉल या वेबसर्वर लॉग फ़ाइलों जैसे भारी फ़ाइलों के लिए।

वे फ़ाइलें पूरी तरह से स्मृति में लोड नहीं होंगी।

वहाँ 1 के लिए एक समाधान/एक फ़ाइल जब तक आप लाइन चार के अंत का सामना 2/प्रक्रिया है कि जो पढ़ा है, 3 पढ़ते हैं,/और फिर लाइन की अगली अंत/फ़ाइल चार के अंत तक जारी रखने के लिए है ?

मुझे लगता है कि एक बार में 1 बार बाइटस्ट्रीम पढ़ने का उपयोग करना और यह देखना संभव होगा कि इसमें एक न्यूलाइन चार है, और जब तक आप ईओएल चार का सामना नहीं करते हैं तब तक बाइट सामग्री को सरणी पर दबाकर, लेकिन मैं (अभी तक) नहीं हूं मेरे जीवन के 3 महीने खोए बिना कुछ लिखने के लिए एएस में पर्याप्त मजबूत ... और मैं प्रक्रिया की गति के बारे में भी निश्चित नहीं हूं।

कोई भी? मैं एक अलग सवाल को लॉन्च करना पसंद नहीं करता क्योंकि यह अनिवार्य रूप से एक ही मांग है लेकिन बड़ी फाइलों के लिए ...

+0

अच्छा सवाल, मुझे लगता है कि इसका अपना विषय होना चाहिए, अगर आपको कोई समाधान मिला तो कृपया इसे साझा करें। Thx – simion314

+0

कोई खेद नहीं है, मैंने वास्तव में फ्लेक्स का उपयोग करना बंद कर दिया - मुझे पाइथन में उपयोग किया जाता है जहां मैं कोड की केवल कुछ पंक्तियों का उपयोग करके उपर्युक्त उपरोक्त कर सकता हूं। फ्लेक्स के साथ मैं गॉथस और अतिरिक्त काम में कूद रहा था, इसलिए अंत में मैं अजगर का उपयोग करने के लिए वापस चला गया। –

0

यदि आप वास्तविक समय रिकॉर्डिंग का उपयोग कर रहे हैं, तो टेक्स्ट .json या .xml जैसे अन्य लोगों की तुलना में उत्पन्न करने के लिए तेज़ है। लेकिन एक्सएमएल और जेसन पढ़ने और पार्स पढ़ने के लिए और अधिक आसान हैं।

0

बड़ी टेक्स्ट फ़ाइलों के बारे में सोचने वालों के लिए, आप लाइन ब्रेक बाइट पढ़ने से पहले लाइन ब्रेक होने पर नहीं जान सकते हैं। मेरा सुझाव है कि एक लूप रखना है जो

फ़ाइलस्ट्रीम.readUTFBytes (fileStream) के साथ सभी बाइट्स को पढ़ने के बजाय होगा।bytesAvailable);

आप एक समय में कुछ सौ बाइट करते हैं, जो भी आपको चाहिए, प्रक्रिया करें, फिर बाद में पढ़ना जारी रखें।

संबंधित मुद्दे