通过文本文件中的打字稿

通过文本文件中的打字稿

问题描述:

循环我已阅读本地文件flight.txt通过文本文件中的打字稿

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 

代码用于读取打字稿的文件。

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

    }; 

现在我想循环,从文件中读取和分析数据到飞行通过创建在每个迭代一个新的对象,并将其添加到一个ArrayList对象 。

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** 

我该如何在打字稿中做到这一点?

您可以使用readline模块一次读取一行。解析数据将仍然是手动的事情:

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}`) 
    }); 
}) 

line事件将每一行触发一次。在整个文件被读取并且文件关闭之后,将触发该事件,这是整个数据集可用的地方,每次发生事件时,我们一次建立一个条目。

欲了解更多有关的ReadLine模块咨询documentation

+0

什么createInterface,createReadStream&reader.on(“线”,(L:字符串)做 –

+1

您可以咨询文档的更详细的解释? readline模块https://nodejs.org/api/readline.html。但是这个想法是'createInterface'需要一个可读的流(在这种情况下是一个文件),它可以从'fs'模块获得。'on ('line',...'添加了一个事件监听器,当新行可用时,传递给它的回调函数将会被调用到每一行。 –

+0

如何将上述对象存储在ArrayList中,像这样** static ArrayList flightList = new ArrayList (); ** –