亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

fs.stats 節點 JS

fs.stats 節點 JS

繁花如伊 2022-10-13 10:39:02
我需要比較兩個文件的大小。如果第一個大于第二個,則返回一個;如果大小相等,則返回零,否則返回-1。我寫了一個我無法通過的測試:test('compareFileSizes', (done) => {  const filepath1 = `${__dirname}/../Makefile`;  const filepath2 = `${__dirname}/test.js`;  compareFileSizes(filepath1, filepath2, (_error1, result) => {    expect(result).toBe(-1);    done();  });});我的代碼:import fs from 'fs';export const compareFileSizes = (file1, file2, cb) => {  fs.stat(file1, (_err, stats1) => {    let size1 = stats1.size;    cb(_err, size1);  fs.stat(file2, (_err, stats2) => {    let size2 = stats2.size;    cb(_err, size2);    if(size1 > size2){      return Math.sign(1);    } else if(size1 === size2){      return Math.sign(0);    } else{      return Math.sign(-1);    }  })  })該函數不返回所需的內容。走哪條路或如何正確地削減算法?};
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

如果您不想阻塞執行線程,則不能使用fs.statSync,在回調的幫助下,您的代碼將如下所示:


import fs from 'fs';


export const compareFileSizes = (file1, file2, cb) => {

    fs.stat(file1, (error, stats1) => {

        if (error) {

            console.error(error);

            return cb(error);

        }


        const size1 = stats1.size;


        fs.stat(file2, (err, stats2) => {

            if (err) {

                console.error(err);

                return cb(err);

            }


            const size2 = stats2.size;

            const result = Math.sign(size1 - size2);


            return cb(null, result);

        });

    })

}


查看完整回答
反對 回復 2022-10-13
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

所以這不是更容易嗎


import fs from 'fs';

export const compareFileSizes = (file1, file2) => {

  let size1 = fs.statSync(file1).size;

  let size2 = fs.statSync(file2).size;

  return Math.sign(size1 - size2);

})

根本不需要回調?


查看完整回答
反對 回復 2022-10-13
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號