ホームページ ウェブフロントエンド jsチュートリアル Node.jsファイルの操作方法まとめ_node.js

Node.jsファイルの操作方法まとめ_node.js

May 16, 2016 pm 03:10 PM
node.js ファイル操作

Node.js には、他の言語と同様にファイル操作もあります。 node.js でのファイル操作については説明しません。他の言語でのファイル操作には、通常、ファイルのオープン、クローズ、読み取り、書き込み、ファイル情報、ディレクトリの作成と削除、ファイルの削除、ファイル パスの検出などが含まれます。 node.js にも同様の機能があり、他の言語とは API が異なるのかもしれません。

1. 同期および非同期のオープンとクローズ

/**
 * Created by Administrator on 2016/3/21.
 */
var fs=require("fs");
//同步读 fs.openSync = function(path, flags, mode)
//模块fs.js文件中如上面定义的openSync 函数3个参数
//.1.path 文件路径
//2.flags 打开文件的模式
//3.model 设置文件访问模式
//fd文件描述
var fd=fs.openSync("data/openClose.txt",'w');
//fs.closeSync = function(fd)
fs.closeSync(fd);

//异步读写
//fs.open = function(path, flags, mode, callback_)
//fs.close = function(fd, callback)
fs.open("data/openColse1.txt",'w',function(err,fd) {
  if (!err)
  {
    fs.close(fd,function(){
      console.log("closed");
    });
  }
});

ログイン後にコピー

フラグは他の言語にもあり、主に r、w、a の 3 つの部分に分かれています。これらは C のフラグと似ています。

1.r - ファイルを読み取り専用モードで開きます。データ ストリームの初期位置はファイルの先頭です
2.r+ - ファイルを読み取り/書き込みモードで開きます。データ ストリームの初期位置はファイルの先頭です
3.w - ファイルが存在する場合、ファイルの長さは 0 にクリアされます。つまり、ファイルの内容は失われます。存在しない場合は、作成してみてください。データ ストリームの初期位置はファイルの先頭です
4.w+ - ファイルが存在しない場合は、ファイルを作成してみてください。ファイルが存在する場合は、ファイルの長さを 0 に設定します。つまり、ファイルの内容は失われます。データ ストリームの初期位置はファイルの先頭です
5.a - ファイルを書き込み専用モードで開きます。ファイルが存在しない場合は、データ ストリームの最初の位置がファイルの最後に追加されます。ファイルの終わり。
6.a+ - 読み取りおよび書き込みのためにファイルを開きます。ファイルが存在しない場合は、データ ストリームの最初の位置がファイルの最後に追加されます。ファイル。

2. 読み書き

1. 単純なファイルの読み取りと書き込み

/**
 * Created by Administrator on 2016/3/21.
 */
var fs = require('fs');
var config = {
  maxFiles: 20,
  maxConnections: 15,
  rootPath: "/webroot"
};
var configTxt = JSON.stringify(config);

var options = {encoding:'utf8', flag:'w'};
//options 定义字符串编码 打开文件使用的模式 标志的encoding、mode、flag属性 可选
//异步
//fs.writeFile = function(path, data, options, callback_)
//同步
//fs.writeFileSync = function(path, data, options)

fs.writeFile('data/config.txt', configTxt, options, function(err){
  if (err){
    console.log("Config Write Failed.");
  } else {
    console.log("Config Saved.");
    readFile();
  }
});
function readFile()
{
  var fs = require('fs');
  var options = {encoding:'utf8', flag:'r'};
  //异步
  //fs.readFile = function(path, options, callback_)
  //同步
  //fs.readFileSync = function(path, options)
  fs.readFile('data/config.txt', options, function(err, data){
    if (err){
      console.log("Failed to open Config File.");
    } else {
      console.log("Config Loaded.");
      var config = JSON.parse(data);
      console.log("Max Files: " + config.maxFiles);
      console.log("Max Connections: " + config.maxConnections);
      console.log("Root Path: " + config.rootPath);
    }
  });
}

ログイン後にコピー
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe SimpleReadWrite.js
Config Saved.
Config Loaded.
Max Files: 20
Max Connections: 15
Root Path: /webroot

Process finished with exit code 0

ログイン後にコピー

2. 同期読み取りと書き込み

/**
 * Created by Administrator on 2016/3/21.
 */
var fs = require('fs');
var veggieTray = ['carrots', 'celery', 'olives'];

fd = fs.openSync('data/veggie.txt', 'w');
while (veggieTray.length){
  veggie = veggieTray.pop() + " ";
  //系统api 
  //fd 文件描述 第二个参数是被写入的String或Buffer
  // offset是第二个参数开始读的索引 null是表示当前索引
  //length 写入的字节数 null一直写到数据缓冲区末尾
  //position 指定在文件中开始写入的位置 null 文件当前位置
  // fs.writeSync(fd, buffer, offset, length[, position]);
  // fs.writeSync(fd, string[, position[, encoding]]);
  //fs.writeSync = function(fd, buffer, offset, length, position)
  var bytes = fs.writeSync(fd, veggie, null, null);
  console.log("Wrote %s %dbytes", veggie, bytes);
}
fs.closeSync(fd);

var fs = require('fs');
fd = fs.openSync('data/veggie.txt', 'r');
var veggies = "";
do {
  var buf = new Buffer(5);
  buf.fill();
  //fs.readSync = function(fd, buffer, offset, length, position)
  var bytes = fs.readSync(fd, buf, null, 5);
  console.log("read %dbytes", bytes);
  veggies += buf.toString();
} while (bytes > 0);
fs.closeSync(fd);
console.log("Veggies: " + veggies);

ログイン後にコピー
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe syncReadWrite.js
Wrote olives 7bytes
Wrote celery 7bytes
Wrote carrots 8bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 2bytes
read 0bytes
Veggies: olives celery carrots     

Process finished with exit code 0

ログイン後にコピー

3. 非同期読み取りと書き込みと同期読み取りと書き込みには、ほとんどより多くのパラメーターのコールバックがあります

/**
 * Created by Administrator on 2016/3/21.
 */
var fs = require('fs');
var fruitBowl = ['apple', 'orange', 'banana', 'grapes'];
function writeFruit(fd){
  if (fruitBowl.length){
    var fruit = fruitBowl.pop() + " ";
   // fs.write(fd, buffer, offset, length[, position], callback);
   // fs.write(fd, string[, position[, encoding]], callback);
   // fs.write = function(fd, buffer, offset, length, position, callback)
    fs.write(fd, fruit, null, null, function(err, bytes){
      if (err){
        console.log("File Write Failed.");
      } else {
        console.log("Wrote: %s %dbytes", fruit, bytes);
        writeFruit(fd);
      }
    });
  } else {
    fs.close(fd);
    ayncRead();
  }
}
fs.open('data/fruit.txt', 'w', function(err, fd){
  writeFruit(fd);
});

function ayncRead()
{
  var fs = require('fs');
  function readFruit(fd, fruits){
    var buf = new Buffer(5);
    buf.fill();
    //fs.read = function(fd, buffer, offset, length, position, callback)
    fs.read(fd, buf, 0, 5, null, function(err, bytes, data){
      if ( bytes > 0) {
        console.log("read %dbytes", bytes);
        fruits += data;
        readFruit(fd, fruits);
      } else {
        fs.close(fd);
        console.log ("Fruits: %s", fruits);
      }
    });
  }
  fs.open('data/fruit.txt', 'r', function(err, fd){
    readFruit(fd, "");
  });
}

ログイン後にコピー
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe asyncReadWrite.js
Wrote: grapes 7bytes
Wrote: banana 7bytes
Wrote: orange 7bytes
Wrote: apple 6bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 5bytes
read 2bytes
Fruits: grapes banana orange apple  

Process finished with exit code 0

ログイン後にコピー

4. ストリーミング読み取りと書き込み

/**
 * Created by Administrator on 2016/3/21.
 */
var fs = require('fs');
var grains = ['wheat', 'rice', 'oats'];
var options = { encoding: 'utf8', flag: 'w' };
//从下面的系统api可以看到 createWriteStream 就是创建了一个writable流
//fs.createWriteStream = function(path, options) {
//  return new WriteStream(path, options);
//};
//
//util.inherits(WriteStream, Writable);
//fs.WriteStream = WriteStream;
//function WriteStream(path, options)
var fileWriteStream = fs.createWriteStream("data/grains.txt", options);
fileWriteStream.on("close", function(){
  console.log("File Closed.");
  //流式读
  streamRead();
});
while (grains.length){
  var data = grains.pop() + " ";
  fileWriteStream.write(data);
  console.log("Wrote: %s", data);
}
fileWriteStream.end();

//流式读
function streamRead()
{
  var fs = require('fs');
  var options = { encoding: 'utf8', flag: 'r' };
  //fs.createReadStream = function(path, options) {
  //  return new ReadStream(path, options);
  //};
  //
  //util.inherits(ReadStream, Readable);
  //fs.ReadStream = ReadStream;
  //
  //function ReadStream(path, options)
  //createReadStream 就是创建了一个readable流
  var fileReadStream = fs.createReadStream("data/grains.txt", options);
  fileReadStream.on('data', function(chunk) {
    console.log('Grains: %s', chunk);
    console.log('Read %d bytes of data.', chunk.length);
  });
  fileReadStream.on("close", function(){
    console.log("File Closed.");
  });
}

ログイン後にコピー
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe StreamReadWrite.js
Wrote: oats 
Wrote: rice 
Wrote: wheat 
File Closed.
Grains: oats rice wheat 
Read 16 bytes of data.
File Closed.

Process finished with exit code 0

ログイン後にコピー

個人的には、これらの API は一度使って感覚をつかめば大丈夫だと思います。必要なのは、出会ったときに使えるようになれば十分です。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

gho ファイルを削除できますか? gho ファイルを削除できますか? Feb 19, 2024 am 11:30 AM

gho ファイルは、NortonGhost ソフトウェアによって作成され、オペレーティング システムとデータのバックアップと復元に使用されるイメージ ファイルです。場合によっては、gho ファイルを削除できる場合もありますが、削除には注意が必要です。この記事では、ghoファイルの役割やghoファイルを削除する際の注意点、ghoファイルの削除方法を紹介します。まず、gho ファイルの役割を理解しましょう。 gho ファイルは、ハードディスク全体または特定のパーティションのイメージを保存できる圧縮システムおよびデータ バックアップ ファイルです。この種のバックアップ ファイルは通常、緊急時の回復に使用されます。

Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Golang を使用してファイルを安全に読み書きするにはどうすればよいですか? Jun 06, 2024 pm 05:14 PM

Go ではファイルを安全に読み書きすることが重要です。ガイドラインには以下が含まれます。 ファイル権限の確認 遅延を使用してファイルを閉じる ファイル パスの検証 コンテキスト タイムアウトの使用 これらのガイドラインに従うことで、データのセキュリティとアプリケーションの堅牢性が確保されます。

Go プログラミングのヒント: ファイルからコンテンツを削除する Go プログラミングのヒント: ファイルからコンテンツを削除する Apr 04, 2024 am 10:06 AM

Go 言語では、ファイルの内容をクリアする 2 つの方法が提供されています。io.Seek と io.Truncate を使用する方法と、ioutil.WriteFile を使用する方法です。方法 1 では、カーソルをファイルの末尾に移動してからファイルを切り詰めます。方法 2 では、空のバイト配列をファイルに書き込みます。実際のケースでは、これら 2 つの方法を使用して Markdown ファイルのコンテンツをクリアする方法を示します。

修正方法: Java ファイル操作エラー: ファイルの書き込みに失敗しました 修正方法: Java ファイル操作エラー: ファイルの書き込みに失敗しました Aug 26, 2023 pm 09:13 PM

解決方法: Java ファイル操作エラー: ファイルの書き込みに失敗しました Java プログラミングではファイル操作が必要になることが多く、ファイル書き込みは重要な機能の 1 つです。ただし、ファイル書き込みエラーが発生し、プログラムが正常に実行できなくなる場合があります。この記事では、この種の問題の解決に役立ついくつかの一般的な原因と解決策について説明します。間違ったパス: よくある問題は、間違ったファイル パスです。指定したパスにファイルを書き込もうとすると、パスが存在しないか、アクセス許可が不十分な場合、ファイルは書き込まれます。

Go言語によるファイル操作機能を学び、ファイルの暗号化、圧縮、アップロード、ダウンロード機能を実装する Go言語によるファイル操作機能を学び、ファイルの暗号化、圧縮、アップロード、ダウンロード機能を実装する Jul 29, 2023 pm 10:37 PM

Go 言語のファイル操作関数を学習し、ファイルの暗号化、圧縮、アップロード、ダウンロード機能を実装します。Go 言語は、オープンソースの静的型付けプログラミング言語であり、その効率的なパフォーマンスと簡潔な構文により、開発分野で広く普及しています。 Go 言語の標準ライブラリには豊富なファイル操作関数が用意されており、ファイルの読み書き、暗号化や圧縮、アップロードやダウンロードなどが非常に簡単に行えます。この記事では、Go言語のファイル操作関数を使って、ファイルの暗号化、圧縮、アップロード、ダウンロードの機能を実装する方法を紹介します。まず、関連する 3 つのファイルをインポートする必要があります

PHPファイルの操作例:CSVファイルの読み込み PHPファイルの操作例:CSVファイルの読み込み Jun 20, 2023 am 11:42 AM

PHP は、Web 開発で広く使用されている人気のあるプログラミング言語です。 Web アプリケーションでは、ファイル操作は基本的な一般的な機能です。この記事では、PHP を使用して CSV ファイルを読み込み、HTML テーブルに表示する方法を説明します。 CSV は、表形式のデータを Excel などの表計算ソフトウェアにインポートするために使用される一般的なファイル形式です。 CSV ファイルは通常、多くの行で構成され、各行はカンマ区切りの値で構成されます。通常、最初の行には列ヘッダーが含まれており、各列値の意味を説明します。ここではPHPを使用します

C++ を使用してファイル内の指定された場所にコンテンツを挿入するにはどうすればよいですか? C++ を使用してファイル内の指定された場所にコンテンツを挿入するにはどうすればよいですか? Jun 04, 2024 pm 03:34 PM

C++ では、ofstream クラスを使用して、ファイル内の指定された場所にコンテンツを挿入します。ファイルを開いて挿入ポイントを見つけます。使用

PHPでのファイル操作にSplFileInfoを使用するにはどうすればよいですか? PHPでのファイル操作にSplFileInfoを使用するにはどうすればよいですか? Jun 01, 2023 pm 07:01 PM

広く使用されているサーバー側プログラミング言語として、PHP は多くの便利なファイル処理関数を提供するだけでなく、より高度なファイル操作クラスもいくつか提供します。より便利なクラスの 1 つは SplFileInfo です。これを使用すると、ファイルの読み取りおよび書き込み操作をより柔軟かつ効率的に実行できます。この記事では、PHPのSplFileInfoクラスを使ってファイル操作を行う方法を紹介します。 1. SplFileInfo クラスの概要 SplFileInfo クラスは、PHP の組み込みクラスです (必要ありません)。

See all articles