2017-09-10 3 views
0

Ich habe eine lokale Datei lesen flight.txtLooping durch die Textdatei in Typoskript

1 DFW BOM 2016-05-20 12:20 2016-05-21 02:40 1084.00 JetAirways 100 
2 DFW DEL 2016-04-24 17:15 2016-04-25 07:20 1234.00 Lufthansa 100 
3 DFW FRA 2016-06-05 13:30 2016-06-05 03:32 674.00 AmericanAirlines 100 

-Code verwendet, um eine Datei in Typoskript zu lesen.

populateFlightList() { 
    let data = fs.readFileSync('flight.txt').toString('utf-8'); { 
     let textByLine = data.split("\n") 
     console.log(textByLine); 

    }; 

jetzt möchte ich aus der Datei Schleife und lesen und analysieren Daten in Flugobjekte durch ein neues Objekt in jeder Iteration zu schaffen und es zu einer Arraylist hinzuzufügen.

try { 
     Scanner fin = new Scanner(file);     
     while(fin.hasNext()) { 
      int number = fin.nextInt();     //flight numer 
      String from = fin.next();     //Departure airport 
      String to = fin.next(); //Arrival airport 
    }**Code in Java** 

Wie mache ich das in Typoskript?

Antwort

1

Sie können das Modul readline verwenden, um jeweils eine Zeile zu lesen. Analysieren der Daten wird immer noch eine manuelle Angelegenheit sein:

import * as fs from 'fs'; 
import * as rd from 'readline' 

var reader = rd.createInterface(fs.createReadStream("W:\\tmp\\stack\\2\\data.txt")) 

var data: Array<{ number: number; from: string; to: string}> = []; 
reader.on("line", (l: string) => { 
    var tokens = l.split(' '); 
    var nr= parseInt(tokens[0]); 
    var from = tokens[1]; 
    var to = tokens[2] 
    console.log(`nr: ${nr} from ${from} to ${to}`); 
    data.push({ 
     number: nr, from, to 
    }); 
}) 
console.log(`Will be empty data has not yet been read ${data.length}`); 

reader.on("close",()=> { 
    console.log(`Data has been read ${data.length}`); 
    data.forEach(element => { 
     console.log(`nr: ${element.number} from ${element.from} to ${element.to}`) 
    }); 
}) 

Die line Veranstaltung wird für jede Zeile einmal ausgelöst werden. Das Ereignis close wird ausgelöst, nachdem die gesamte Datei gelesen und die Datei geschlossen wurde. Dies ist der Ort, an dem der gesamte Datensatz zur Verfügung steht. Dabei wird jeweils ein Eintrag nach dem Ereignis line erstellt.

Für mehr über die Readline- Modul konsultieren die documentation

+0

was macht Create, createReadStream & reader.on („line“, (l: string) tun –

+1

Sie können die Dokumentation für eine ausführlichere Erklärung der konsultieren? readline modul https://nodejs.org/api/readline.html Aber die Idee ist, dass 'createInterface' einen lesbaren Stream (in diesem Fall eine Datei) benötigt, der vom' fs' Modul abgerufen werden kann ('line', ... 'fügt einen Ereignis-Listener hinzu, wenn neue Zeilen verfügbar sind, und der an ihn übergebene Rückruf wird für jede Zeile aufgerufen. –

+0

Wie speichere ich das obige Objekt in ArrayList so ** static ArrayList flightList = new ArrayList <>(); ** –