ホームページ  >  記事  >  ウェブフロントエンド  >  ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

青灯夜游
青灯夜游転載
2022-03-31 20:34:032203ブラウズ

node には多くの組み込みオブジェクトがあり、パスやファイルなどの操作を含む多くの操作を実行するのに役立ちます。以下の記事では、nodeの組み込みモジュールのうち、よく使われるpathモ​​ジュールとfsモジュールについて紹介しますので、ご参考になれば幸いです。

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

パス モジュール

パス モジュールはパスとファイルの処理に使用され、多くのメソッドを提供します。

path.resolve

パスとファイル名を連結する必要があります。

const basePath = '/user/why'
const filename = 'abc.txt'

その後、誰かが文字列のスプライシングを使用して接続します。

const filePath = basePath + '/' + filename
console.log(filePath);

この結果には問題はありませんが、さまざまなシステムを考慮すると、Windows システムでは \ または \\ または / をパス区切り記号として使用できますが、Mac OS および Linux Unix オペレーティング システムでは / をパス区切り記号として使用します。

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

上記の問題を解決するには、

path.resolve を使用してパスを結合します。

const path = require('path')

const basePath = '/user/why'
const filename = 'abc.txt'

const filePath = path.resolve(basePath, filename)

console.log(filePath);

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

パスから情報を取得します

    dirname: ファイルの
  • 親フォルダーを取得します
  • basename:
  • ファイル名を取得
  • extname:
  • ファイル拡張子を取得
  • const path = require('path')
    
    const filePath = '/User/haha/abc.txt'
    
    console.log(path.dirname(filePath));
    console.log(path.basename(filePath));
    console.log(path.extname(filePath));

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

##パスの結合

複数のパスを結合したいが、オペレーティング システムが異なると異なるセパレータが使用される可能性がある場合は、path.join 関数を使用できます。

const path = require('path')

const basepath = '/User/haha'
const filename = 'abc.txt'

const filePath = path.join(basepath, filename)
console.log(filePath);

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

ファイルとフォルダーを結合する

ファイルとフォルダーを結合したい場合は、パスを使用できます。解決する。

const basepath = 'User/haha'
const filename = 'abc.txt'

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュールpath.resolve と path.join はパスの結合にも使用できますが、それらの違いは何でしょうか?

const basepath = '../User/haha'
const filename = './abc.txt'
const othername = './haha.js'

const filePath1 = path.join(basepath, filename, othername)
console.log(filePath1);

const filePath2 = path.resolve(basepath, filename, othername)
console.log(filePath2);

違いがわかります。

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

fs module

nodejs

ほとんどのファイル システム API は、次の 3 つの操作方法を提供します。

    同期ファイル操作: コードはブロックされ、実行を継続しません。
  • #非同期コールバック関数ファイル操作: コードはブロックされず、コールバックが必要です関数に渡されるため、結果が取得されると、コールバック関数が実行されます。
  • 非同期 Promise オペレーション ファイル: コードはブロックされません。fs.promises を介してメソッド オペレーションを呼び出すと、 Promise は渡すことができ、その後、処理のためにキャッチされます。
  • #ファイル ステータス (情報) の読み取り

メソッド 1 同期操作: fs.statSync
const fs = require('fs')

const filepath = './abc.txt'
const info = fs.statSync(filepath)
console.log('后续需要执行的代码');
console.log(info);

方法 2 非同期操作

fs.stat(filepath, (err, info) => {
  if(err) {
    console.log(err);
    return
  }
  console.log(info);
  console.log(info.isFile()); // 判断是否是一个文件
  console.log(info.isDirectory()); // 判断是否是一个文件夹
})
console.log('后续需要执行的代码');
ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール方法 3: Promise

fs.promises.stat(filepath).then(info => {
  console.log(info);
}).catch(err => {
  console.log(err);
})

console.log('后续需要执行的代码');

ファイル記述子

開いているすべてのファイル A ## にノードが割り当てられます形式 numeric の #ファイル記述子

。すべてのファイル システム操作は、これらのファイル記述子を使用して、特定の各ファイルを識別および追跡します。

fs.open() メソッドは、新しいファイル記述子 fd を割り当てるために使用されます。ファイル記述子を割り当てた後は、ファイルからのデータの読み取り、ファイルへのデータの書き込み、またはファイルに関する情報の要求に使用できます。

const fs = require('fs')

fs.open('./abc.txt', (err, fd) => {
  if(err) {
    console.log(err);
    return
  }

  // 通过文件描述符去获取文件信息
  fs.fstat(fd, (err, info) => {
    console.log(info);
  })
})
ファイルの読み取りと書き込み

fs.readFile(path[, options], callback): ファイルの内容の読み取り

fs.writeFile( path [, options], callback): ファイルへの内容の書き込み

オプションパラメータ:

flag: 書き込みメソッド

encoding: 文字エンコーディング

の書き込みfiles

fs.writeFile('./abc.txt', content, {flag: "a"}, err => {
  console.log(err);
})

ファイルの読み込み

fs.readFile('./abc.txt', (err, data) => {
  console.log(data);
})

エンコーディングが入力されていない場合は、結果のバッファ (バイナリ) が返されます。

fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => {
  console.log(data);
})

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

フォルダーを作成します

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

fs.mkdir() または fs.mkdirSync を使用します新しいフォルダーを作成します。

const fs = require('fs')

// 创建文件夹
const dirname = './haha'
if(!fs.existsSync(dirname)) {
  fs.mkdir(dirname, (err) => {
    console.log(err);
  })
}
フォルダの内容を取得

fs.readdir

fs.readdir(dirname, (err, files) => {
  console.log(files);
})
フォルダ内の全ファイルを取得します。ディレクトリは以下のとおりです。再帰が使用できます。

ノード内の共通モジュールの簡単な分析: path モジュールと fs モジュール

const fs = require('fs')
const path = require('path')
const dirname = './haha'

function getFiles(dirname) {
  fs.readdir(dirname, {withFileTypes: true}, (err, files) => {
    // console.log(files);
    for(let file of files) {
      // 判断是否是文件夹
      if(file.isDirectory()) {
        const filepath = path.resolve(dirname, file.name)
        getFiles(filepath)
      } else {
        console.log(file.name);
      }
    }
  })
}

getFiles(dirname)

重命名

可以使用fs.rename对文件夹进行重命名。

fs.rename('./haha', './xixi', err => {
  console.log(err);
})

更多node相关知识,请访问:nodejs 教程

以上がノード内の共通モジュールの簡単な分析: path モジュールと fs モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。