Node按行讀取文件

  • 使用line-reader模塊
    包含使用iconv-lite模塊轉(zhuǎn)義字符串
const fs = require('fs');
const lineReader = require('line-reader');
const path = require('path');
const iconv = require("iconv-lite");
const co = require('co');

/**
 * @method 讀取小說(shuō)并解析
 * @param paths 文件地址
 * @returns {Function}
 */
readerTXT(paths) {
    return function (cb) {
        co(function* () {
            let count = 0; //章節(jié)數(shù)
            let contents = [];//記錄內(nèi)容
            let oldTitle = '簡(jiǎn)介';//記錄當(dāng)前標(biāo)題
            let content = [];//記錄當(dāng)前內(nèi)容
            //調(diào)用lineReader模塊的eachLine按行讀取接口,并設(shè)置讀取字節(jié)碼,方便字符編碼轉(zhuǎn)義
            lineReader.eachLine(paths, {encoding: 'binary'}, function (line, last) {
                //轉(zhuǎn)義
                let oldStr = new Buffer(line, 'binary');
                //默認(rèn)utf8
                let str = iconv.decode(oldStr, 'utf8');
                //判斷是否是gbk
                if (str.indexOf('?') !== -1) {
                    str = iconv.decode(oldStr, 'gb2312');
                }
                //判斷是否按規(guī)則提取內(nèi)容
                let chapterTest = /(^\第)(.{1,9})[章](\s*)(.*)|(^\[前言序章完本])(\s*)(.*)/;
                if (chapterTest.test(str)) {
                    //保存章節(jié)
                    contents.push({
                        title: oldTitle,
                        filename: count,
                        content: content
                    });
                    oldTitle = str;
                    content = [];
                    count++;
                } else {
                    if (str && (str.indexOf("第") === -1 && str.indexOf("卷") === -1) && (str.indexOf("第") === -1 && str.indexOf("部") === -1) && str.indexOf("===") === -1 && (str.indexOf("更多") === -1 && str.indexOf("http") === -1)) {
                        content.push(str);
                    }
                }
                //判斷是否到最后一行
                if (last) {
                    contents.push({
                        title: oldTitle,
                        filename: count,
                        content: content
                    });
                    cb(null, contents);
                }
            });
        }).catch(function (err) {
            cb(new Error(err.message), null);
        })
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淳地,一起剝皮案震驚了整個(gè)濱河市怖糊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颇象,老刑警劉巖伍伤,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異遣钳,居然都是意外死亡扰魂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門蕴茴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)劝评,“玉大人,你說(shuō)我怎么就攤上這事倦淀〗螅” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵撞叽,是天一觀的道長(zhǎng)姻成。 經(jīng)常有香客問(wèn)我,道長(zhǎng)愿棋,這世上最難降的妖魔是什么科展? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮初斑,結(jié)果婚禮上辛润,老公的妹妹穿的比我還像新娘。我一直安慰自己见秤,他們只是感情好砂竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹃答,像睡著了一般乎澄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上测摔,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天置济,我揣著相機(jī)與錄音解恰,去河邊找鬼。 笑死浙于,一個(gè)胖子當(dāng)著我的面吹牛护盈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播羞酗,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼腐宋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了檀轨?” 一聲冷哼從身側(cè)響起胸竞,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎参萄,沒(méi)想到半個(gè)月后卫枝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讹挎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年校赤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淤袜。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痒谴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铡羡,到底是詐尸還是另有隱情积蔚,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布烦周,位于F島的核電站尽爆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏读慎。R本人自食惡果不足惜漱贱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夭委。 院中可真熱鬧幅狮,春花似錦、人聲如沸株灸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慌烧。三九已至逐抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屹蚊,已是汗流浹背厕氨。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工进每, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人命斧。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓田晚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親国葬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肉瓦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評(píng)論 0 5
  • 一、核心模塊和對(duì)象 核心模塊的意義 常用內(nèi)置模塊path:處理文件路徑fs:操作文件系統(tǒng)child_process...
    EndEvent閱讀 4,408評(píng)論 0 1
  • 三年_3閱讀 230評(píng)論 0 0
  • 發(fā)自內(nèi)心的鼓勵(lì)才能更好的激發(fā)他人哪雕。對(duì)于身邊的人不要抱有排斥的心理去接納對(duì)方船殉。 學(xué)會(huì)包容對(duì)方,就像父母包容自己的孩子...
    楊平的閱讀 135評(píng)論 3 0
  • 越嫵媚斯嚎,越冰涼利虫。 蒼山滾滾去,青山知我心堡僻。 你愿意活成花朵的樣子嗎糠惫? 花朵就好比頭,頭只有一個(gè)钉疫,腦袋為王硼讽,那是“王...
    媚珠春華閱讀 1,235評(píng)論 0 1