Nodejs プロジェクトでファイルを追加、削除、変更、確認する方法をすぐに理解する

青灯夜游
リリース: 2021-09-01 18:22:03
転載
1546 人が閲覧しました

Nodejs プロジェクトでファイルを追加、削除、変更、確認する方法をすぐに理解する

この記事は主に、node.js を初めて使用する学生向けに書かれています。この記事では主に、nodejs のファイル モジュールについて紹介します。nodejs のファイル モジュールを通じて、作成、読み取り、オペレーティング システム上のファイルやフォルダーの変更と削除は、Linux サーバーでも実行できます。なぜなら、nodejs はクロスプラットフォームの JavaScript 実行環境であるからです。 [推奨学習:「nodejs チュートリアル」]

Nodejs ファイル システムの公式ドキュメント: https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

ソース コード: https://github.com/cmdfas/nodejs-file-system

プロジェクト構造:

├── files
│   ├── file1
│   └── file2
├── dir.js
├── index-callback.js
├── index-promise.js
└── stream.js
ログイン後にコピー

一般的なファイル操作

コールバック関数式操作

Createindex-callback.js、コードは次のとおりです

const fs = require('fs')
const path = require('path')

// 读取文件
fs.readFile(path.join(__dirname, 'files', 'file1'), (err, buf) => {
    if (err) throw err
    console.log(buf.toString()) 
})

// 写入文件
fs.writeFile(path.join(__dirname, 'files', 'file3'), '欢迎光临', (err) => {
    if (err) throw err
    console.log('写入完成') 

  	// 在文件末尾追加
    fs.appendFile(path.join(__dirname, 'files', 'file3'), '\n\n男宾三位', (err) => {
        if (err) throw err
        console.log('追加完成') 

      	// 修改文件名称
        fs.rename(path.join(__dirname, 'files', 'file3'), path.join(__dirname, 'files', 'file3-rename'), (err) => {
            if (err) throw err
            console.log('改名完成') 
    
        })
    })
})
ログイン後にコピー

summary:

  • readFile が使用されます ファイルの内容を読み取ります。読み取りが成功すると、コールバック関数がバッファー形式を返すため、書き込むには toString() メソッド
  • writeFile を呼び出す必要があります。ファイルが存在しない場合は、コンテンツをファイルに追加します ファイルは自動的に作成されます
  • appendFile ファイルの最後にコンテンツを追加します ファイルが存在しない場合、ファイルは
  • rename ファイル名を変更するために使用できます。
  • path.join はファイル パスを結合するために使用されます。これにより、オペレーティング システムごとにパス形式が異なるという問題
  • __dirname は、node.js グローバル変数です。デフォルトは、現在のプロジェクト ディレクトリです。

promise async await 操作

Createindex-promise.js、コードは次のとおりです

const fsPromises = require('fs').promises
const path = require('path')

const fileFunc = async () => {
    try {
        const data = await fsPromises.readFile(path.join(__dirname, 'files', 'file1'))
        console.log(data.toString())
        await fsPromises.unlink(path.join(__dirname, 'files', 'file1'))
      
        await fsPromises.writeFile(path.join(__dirname, 'files', 'file5'), data)
        await fsPromises.appendFile(path.join(__dirname, 'files', 'file5'), '\n\n欢迎光临')
        await fsPromises.rename(path.join(__dirname, 'files', 'file5'), path.join(__dirname, 'files', 'file5-rename'))
        const newData = await fsPromises.readFile(path.join(__dirname, 'files', 'file5-rename'))
        console.log(newData.toString())
    } catch (error) {
        console.log(error)
    }
}

fileFunc()
ログイン後にコピー

概要:

  • async await を使用したコールバック操作との比較操作はより洗練され、コールバック地獄は発生しません
  • unlinkファイルの削除に使用されます

ファイル ストリーム操作

作成 stream.js、コードは次のとおりです

方法 1

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

// 监听读取并写入
rs.on('data', (chunk) => {
	ws.write(chunk)
})
ログイン後にコピー

大きなファイルの読み取りまたはネットワークの処理時ファイル ストリーム操作は、大きなファイルを操作するときに非常に便利です。 , 毎回読み取るデータの量を設定できます。デフォルトは 64kb

メソッド 2

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

rs.pipe(ws)
ログイン後にコピー

pipeこのメソッドは、読み取りファイル ストリームを書き込みストリームに自動的にインポートします。 、これは便利な操作に相当します。

操作フォルダ

dir.jsを作成します。コードは次のとおりです。

const fs = require('fs')

// 判断文件夹是否存在
if (!fs.existsSync('./new')) {
  	// 创建文件夹
    fs.mkdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹创建成功')
    })
}

if (fs.existsSync('./new')) {
  	// 删除文件夹
    fs.rmdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹删除成功')
    })
}
ログイン後にコピー

概要:

  • existsSync は、フォルダーが存在するかどうかを判断するために使用される同期メソッドです。
  • mkdirフォルダーの作成
  • rmdirフォルダーの削除

これら 3 つのフォルダー操作方法は、毎日の食事と同じように非常に一般的です。

プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !

以上がNodejs プロジェクトでファイルを追加、削除、変更、確認する方法をすぐに理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート