1. 程式人生 > 其它 >nodejs--檔案複製拷貝--資料夾遍歷--資料處理

nodejs--檔案複製拷貝--資料夾遍歷--資料處理

技術標籤:nodejsnodejs檔案複製拷貝資料夾遍歷資料處理

   如果採用nodejs處理業務邏輯,必須處理檔案資料,而檔案資料與資料夾,檔案本身相關。相關函式nodejs提供了內建模組。本文將這一方面常用的功能,根據網際網路上提供的資料進行整理。

1.檔案拷貝

1.1小檔案拷貝

   以上程式使用fs.readFileSync從源路徑讀取檔案內容,並使用fs.writeFileSync將檔案內容寫入目標路徑。

var fs = require('fs');
function copy(src, dst) {
    fs.writeFileSync(dst, fs.readFileSync
(src)); } function main(argv) { copy(argv[0], argv[1]); } main(process.argv.slice(2));

1.2大檔案拷貝

   使用fs.createReadStream建立了一個原始檔的只讀資料流,並使用fs.createWriteStream建立了一個目標檔案的只寫資料流,並且用pipe方法把兩個資料流連線了起來。連線起來後發生的事情,說得抽象點的話,水順著水管從一個桶流到了另一個桶。

var fs = require('fs');
function copy(src, dst) {
    fs.createReadStream
(src).pipe(fs.createWriteStream(dst)); } function main(argv) { copy(argv[0], argv[1]); } main(process.argv.slice(2));

2.資料夾遍歷

   有時需要獲取資料夾的內容,來進行某種處理。

2.1同步遍歷

function travel(dir, callback) {
    fs.readdirSync(dir).forEach(function (file) {
        var pathname = path.join(dir, file);
        if
(fs.statSync(pathname).isDirectory()) { travel(pathname, callback); } else { callback(pathname); } }); }

2.2非同步遍歷

function travel(dir, callback, finish) {
    fs.readdir(dir, function (err, files) {
        (function next(i) {
            if (i < files.length) {
                var pathname = path.join(dir, files[i]);

                fs.stat(pathname, function (err, stats) {
                    if (stats.isDirectory()) {
                        travel(pathname, callback, function () {
                            next(i + 1);
                        });
                    } else {
                        callback(pathname, function () {
                            next(i + 1);
                        });
                    }
                });
            } else {
                finish && finish();
            }
        }(0));
    });
}

  合理的指令碼程式碼可以有效的提高工作效率,減少重複勞動。


  歡迎光臨知了軟體開發網路平臺,本公司定製開發各類軟體,主要方向為桌面專業軟體開發和外掛定製開發,桌面軟體主要包括文字圖形識別類軟體,資訊管理類軟體,3D列印類軟體,視訊類軟體以及其它涉及專業的各類圖形影象處理軟體。外掛包含AE外掛,AI外掛,PS外掛,PDF外掛,3DMAX外掛以及Word,Excel等Office外掛開發。詳情請諮詢,微信QQ:312117271,手機:18928899728,郵箱: [email protected]
公司網址:http://www.zhiliaos.com