關於使用node進行檔案處理的幾種方式

2021-09-27 04:32:34 字數 2445 閱讀 4499

比較好用的第三方模組

下面通過乙個檔案遍歷例子 來描述下node處理檔案的各種實現方式

很多時候如果不知道其它方式處理的話第一反應就是手寫遞迴處理遍歷資料夾

下面我寫了幾個簡約的列子來看下

我們要處理檔案的目錄結構如下: 

使用遞迴處理的**實現

```

const fs = require('fs');

const path = require('path');

const files = ;

const finddirectory = function (dir) else if (stat.isdirectory())

});};const filesdisplay = function (filepath) else if (stat.isfile())

return files

};console.log(filesdisplay('/users/fengshi/documents/tix/test'))

執行返回結果:

可以看出使用遞迴操作我們最少需要使用fs path模組和一些fs模組的方法

path.resolve(path):乙個路徑或路徑片段解析成乙個絕對路徑返回解析後的路徑字串

fs.readdirsync(dir): 讀取目錄下面的檔案 返回目錄下的檔案列表物件

glob很方便功能也很強大

因為他是基於shell命令的模式 如果想深入研究的話可以參考glob

使用glob模組的話很簡潔實現我們想要的效果

const path = require('path');

const glob = require('glob');

const files = glob.sync(path.resolve('/users/fengshi/documents/tix/test/2.7.7', '**'), );

console.log(files)

引數物件中比較常用的

const path = require('path');

const glob = require('glob');

const ignore = ;

ignore.push(path.resolve('/users/fengshi/documents/tix/test/2.7.7', 'base', '*'));

ignore.push(path.resolve('/users/fengshi/documents/tix/test/2.7.7', 'hls.js'));

const files = glob.sync(path.resolve('/users/fengshi/documents/tix/test/2.7.7', '**'), );

console.log(files)

可以看到base資料夾下和hls.js都忽略了 後續我們可以對檔案組合過濾等處理都很方便

child_process模組非常強大和重要

靈活運用它可以讓你的node水平提高乙個水平

child_process 模組讓我們在乙個子程序內執行一些能夠進入作業系統的命令

使我們可以控制子程序的輸入流,操作它的輸出流 就像在linux系統裡面一樣操作

這裡不詳細講解關於child_process的點 主要就是執行各種命令 來實現我們的結果

大致我們使用到的一些方法主要是

這種方式需要對shell指令碼有一定的基礎會方便很多 我們先建立乙個shell指令碼檔案filehandle

#!/bin/bash

for file in `ls $1`

doif [ -d $1"/"$file ]

then

read_dir $1"/"$file

else

echo $1"/"$file

fidone

然後在js裡面呼叫

const childprocess = require('child_process'); 

const dir = '/users/fengshi/documents/tix/test/2.7.7'

const files = childprocess.execfilesync('/users/fengshi/documents/tix/test/filehandle', [dir], );

console.log(files)

child_process模組讓我們可以脫離在node環境下 使用shell指令碼可以實現我們想做的很多

如何使用 類進行檔案的 I O 處理

大多數 c 程式設計師都熟悉不止乙個檔案 i o 庫。首先是傳統的 unix 風格的庫,它由一些低階函式如 read 和 open 組成。其次是 ansi c 的 庫,它包含 fopen 和 fread 等函式。其它的還有一些具備所有權的庫或框架,比如 mfc,它有很多自己的檔案處理類。這些庫一般都...

類進行檔案的 I O 處理

大多數 c 程式設計師都熟悉不止乙個檔案 i o 庫。首先是傳統的 unix 風格的庫,它由一些低階函式如 read 和 open 組成。其次是 ansi c 的 庫,它包含 fopen 和 fread 等函式。其它的還有一些具備所有權的庫或框架,比如 mfc,它有很多自己的檔案處理類。這些庫一般都...

使用QFile進行檔案操作

qfile類我我們提供了操作檔案的常用功能。它是一種io裝置,可以用來讀寫文字檔案和二進位制檔案,也可以用來讀寫qt的資源檔案。qfile類可以單獨使用,該類本身提供了read write函式,但更方便的方式是,將qfile和qtextstream或qdatastream一起使用。一般情況下,使用q...