Javascript 在typescript中循环遍历文本文件

Javascript 在typescript中循环遍历文本文件,javascript,typescript,typescript-typings,typescript2.0,Javascript,Typescript,Typescript Typings,Typescript2.0,我读了一个本地文件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 用于在typescript中读取文件的代码 p

我读了一个本地文件
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
用于在typescript中读取文件的代码

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

    };
现在我想循环并读取文件,并将数据解析为flight对象 通过在每次迭代中创建一个新对象并将其添加到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**

如何在typescript中执行此操作?

您可以使用
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}`)
    });
})
import*作为来自“fs”的fs;
从“readline”导入*作为rd
var reader=rd.createInterface(fs.createReadStream(“W:\\tmp\\stack\\2\\data.txt”))
变量数据:数组=[];
reader.on(“line”,(l:string)=>{
var标记=l.分割(“”);
var nr=parseInt(令牌[0]);
var-from=代币[1];
var to=代币[2]
log(`nr:${nr}从${from}到${to}`);
数据推送({
编号:nr、from、to
});
})
log(`Will be empty data尚未读取${data.length}`);
reader.on(“关闭”),()=>{
log(`Data已被读取${Data.length}`);
data.forEach(元素=>{
log(`nr:${element.number}从${element.from}到${element.to}`)
});
})
每行将触发一次
事件。读取整个文件并关闭文件后,
close
事件将触发,这是整个数据集可用的地方,每次
事件发生时,我们一次建立一个条目


有关readline模块的更多信息,请参阅

您可以使用
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}`)
    });
})
import*作为来自“fs”的fs;
从“readline”导入*作为rd
var reader=rd.createInterface(fs.createReadStream(“W:\\tmp\\stack\\2\\data.txt”))
变量数据:数组=[];
reader.on(“line”,(l:string)=>{
var标记=l.分割(“”);
var nr=parseInt(令牌[0]);
var-from=代币[1];
var to=代币[2]
log(`nr:${nr}从${from}到${to}`);
数据推送({
编号:nr、from、to
});
})
log(`Will be empty data尚未读取${data.length}`);
reader.on(“关闭”),()=>{
log(`Data已被读取${Data.length}`);
data.forEach(元素=>{
log(`nr:${element.number}从${element.from}到${element.to}`)
});
})
每行将触发一次
事件。读取整个文件并关闭文件后,
close
事件将触发,这是整个数据集可用的地方,每次
事件发生时,我们一次建立一个条目


有关readline模块的更多信息,请参阅

createInterface、createReadStream和reader.on(“line”、(l:string)的作用是什么?您可以查阅文档以了解readline模块的更详细说明。但其想法是,
createInterface
需要一个可读的流(在本例中为文件)可以从
fs
模块中获取。on('line',…上的
为新行可用时添加事件侦听器,并为每一行调用传递给它的回调。如何将上述对象存储在ArrayList中,如静态ArrayList flightList=new ArrayList();扩展代码以将数据保存在数组中,并在所有数据读入数组后将其写出。希望这有帮助。我们可以在聊天中继续讨论吗..还有一些疑问。createInterface、createReadStream和reader.on(“line”,l:string)是什么意思是吗?您可以查阅文档以获得关于readline模块的更详细的解释。但是想法是,
createInterface
需要一个可读的流(在本例中是文件流),该流可以从
fs
模块获得。上的
('line',…
为新行可用时添加事件侦听器,并为每行调用传递给它的回调。如何将上述对象存储在ArrayList中,如静态ArrayList flightList=new ArrayList();扩展代码以将数据保存在数组中,并在所有数据读入数组后将其写出。希望这有帮助。我们可以在聊天中继续讨论吗..没有更多疑问。