Latest web development tutorials

Node.jsのファイルシステム

Node.jsのは、UNIX(POSIX)標準のファイル操作のAPIの同様のセットを提供します。 次のようにノードのインポートファイルシステムモジュール(FS)構文は次のとおりです。

var fs = require("fs")

非同期および同期

Node.jsのファイルシステム(FSモジュール)モジュールのメソッドは、持っているドキュメント機能の内容を読み取りなど非同期および同期のバージョンを、持っている非同期fs.readFile()と同期fs.readFileSync()。

非同期メソッド関数コールバック関数の最後のパラメータ、コールバック関数の最初の引数はエラーメッセージ(エラー)が含まれています。

私はより速く、より高いパフォーマンスを得るために、同期に比べて非同期メソッド、非同期メソッドを使用することで、障害物がないお勧めします。

次のように、INPUT.TXTファイルを作成します。

本教程官网地址:www.w3big.com
文件读取实例

次のように、file.jsファイルを作成します。

var fs = require("fs");

// 异步读取
fs.readFile('input.txt', function (err, data) {
   if (err) {
       return console.error(err);
   }
   console.log("异步读取: " + data.toString());
});

// 同步读取
var data = fs.readFileSync('input.txt');
console.log("同步读取: " + data.toString());

console.log("程序执行完毕。");

次のように上記のコードが実行されます。

$ node file.js 
同步读取: 本教程官网地址:www.w3big.com
文件读取实例

程序执行完毕。
异步读取: 本教程官网地址:www.w3big.com
文件读取实例

次に、私たちはNode.jsのファイルシステムの下で具体的な方法を理解しましょう。


ファイルをオープンします

文法

以下は、非同期モードの構文で開いているファイルです。

fs.open(path, flags[, mode], callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルへのパス。

  • フラグ-ファイルオープン動作。具体的な値は、以下に記載します。

  • モード-設定ファイルモード(パーミッション)、ファイルのデフォルトのパーミッション0666(読み出し可能、書き込み可能)を作成します。

  • コールバック(errは、FD):-コールバックコールバック関数は、次のような2つのパラメータを取ります。

flagsパラメータは、次の値を指定できます。

フラグ 説明
R 読み取りモードでファイルを開きます。 ファイルには、スローを存在しない場合。
R + 読み書きモードでファイルを開きます。 ファイルには、スローを存在しない場合。
RS 同期的な方法でファイルを読み込みます。
RS + ファイルを読み書きするために同期して。
ワット ファイルが存在しない場合は作成され、書き込みモードでファイルを開きます。
WX 同様に 'W'が、ファイルパスが存在する場合、ファイルの書き込みに失敗しました。
ワット+ ファイルが存在しない場合は作成され、読み書きモードでファイルを開きます。
WX + 同様の「ワット+ 'が、ファイルパスが存在する場合、ファイルは読み取りおよび書き込みに失敗しました。
A ファイルが存在しない場合は作成され、追加モードでファイルを開きます。
'A'に似ていますが、ファイルパスが存在する場合、ファイルの追加は失敗します。
+ ファイルが存在しない場合は作成され、追加モードで開いたファイルを読み取るには。
斧+ 同様に '+'が、ファイルパスが存在する場合、ファイルは追加の障害を読み取られます。

次に、file.jsファイルを作成し、次のようにINPUT.TXTファイルの読み取りと書き込みのコードを開きます。

var fs = require("fs");

// 异步打开文件
console.log("准备打开文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
  console.log("文件打开成功!");     
});

次のように上記のコードが実行されます。

$ node file.js 
准备打开文件!
文件打开成功!

ファイル情報の取得

文法

非同期モードの構文を介して情報を入手するには、次のドキュメント:

fs.stat(path, callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • 統計はfs.Statsのオブジェクトであり、(errは、統計):-コールバックコールバック関数は、次のよう2つのパラメータを取ります。

fs.stat(パス)実行後、クラスのインスタンスは、それらの統計のコールバック関数に返されます。 あなたは方法を提供する統計クラスによってファイルの関連属性を決定することができます。 たとえば、ファイルかどうかを判断します。

var fs = require('fs');

fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
    console.log(stats.isFile()); 		//true
})

統計クラスのメソッドは、次のとおりです。

ウェイ 説明
stats.isFile() ファイルがtrueを返す場合、それ以外の場合はfalseを返します。
stats.isDirectory() ディレクトリがtrueを返す場合、それ以外の場合はfalseを返します。
stats.isBlockDevice() ブロックデバイスがtrueを返した場合、それ以外の場合はfalseを返します。
stats.isCharacterDevice() デバイスが文字であればそうでない場合はfalseを返し、trueを返します。
stats.isSymbolicLink() それが真を返すようにソフトリンクであれば、そうでない場合はfalseを返します。
stats.isFIFO() FIFOは、trueを返した場合、それ以外の場合はfalseを返します。 FIFOは、UNIXのコマンドパイプラインの特殊なタイプです。
stats.isSocket() ソケットがtrueを返す場合、それ以外の場合はfalseを返します。

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("准备打开文件!");
fs.stat('input.txt', function (err, stats) {
   if (err) {
       return console.error(err);
   }
   console.log(stats);
   console.log("读取文件信息成功!");
   
   // 检测文件类型
   console.log("是否为文件(isFile) ? " + stats.isFile());
   console.log("是否为目录(isDirectory) ? " + stats.isDirectory());    
});

次のように上記のコードが実行されます。

$ node file.js 
准备打开文件!
{ dev: 16777220,
  mode: 33188,
  nlink: 1,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 40333161,
  size: 61,
  blocks: 8,
  atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST),
  mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST),
  ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) }
读取文件信息成功!
是否为文件(isFile) ? true
是否为目录(isDirectory) ? false

ファイルへの書き込み

文法

以下は、非同期モードの構文でファイルに書き込まれます。

fs.writeFile(filename, data[, options], callback)

ファイルが存在する場合、この方法は、内容が古いファイルの内容を上書きします書き込みます。

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • データ-文字列(文字列)またはバッファ(ストリーム)オブジェクトにすることができ、ファイルに書き込まれるデータを、。

  • オプション-このパラメータは、{エンコーディング、モード、フラグ}を含むオブジェクトです。デフォルトのエンコーディングはUTF-8で、モード0666、 'W'のフラグであり、

  • コールバック-コールバック関数、コールバック関数は、エラーメッセージだけ引数(ERR)が含まれている書き込みが失敗したときに返されます。

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("准备写入文件");
fs.writeFile('input.txt', '我是通过写入的文件内容!',  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("数据写入成功!");
   console.log("--------我是分割线-------------")
   console.log("读取写入的数据!");
   fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("异步读取文件数据: " + data.toString());
   });
});

次のように上記のコードが実行されます。

$ node file.js 
准备写入文件
数据写入成功!
--------我是分割线-------------
读取写入的数据!
异步读取文件数据: 我是通过写入的文件内容

ファイルを読みます

文法

ここでは、ファイルの構文を読み取るための非同期モードは、次のとおりです。

fs.read(fd, buffer, offset, length, position, callback)

このメソッドは、ファイルを読み取るためにファイル記述子を使用しています。

パラメータ

パラメータは以下の通り:

  • FD -ファイルディスクリプタのfs.open()メソッドを介してバック。

  • バッファ-データがバッファに書き込まれます。

  • オフセット-オフセット書き込みバッファが書き込まれます。

  • 長さ-ファイルから読み込まれたバイト数。

  • 位置-ファイルの先頭には、位置がnullの場合、ファイルポインタの現在位置から読み込まれ、読み込まれます。

  • コールバック-コールバック関数はbytesReadは、バッファは、エラーメッセージerrは、bytesReadは、バッファオブジェクトをリードバッファのバイト数を示し、3引数は誤る取ります。

ファイルの内容INPUT.TXT:

本教程官网地址:www.w3big.com

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打开成功!");
   console.log("准备读取文件:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  字节被读取");
      
      // 仅输出读取的字节
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

次のように上記のコードが実行されます。

$ node file.js 
准备打开已存在的文件!
文件打开成功!
准备读取文件:
42  字节被读取
本教程官网地址:www.w3big.com

ファイルを閉じます

文法

非同期モードの構文で閉じられたファイルを以下に示します。

fs.close(fd, callback)

このメソッドは、ファイルを読み取るためにファイル記述子を使用しています。

パラメータ

パラメータは以下の通り:

  • FD -ファイルディスクリプタのfs.open()メソッドを介してバック。

  • コールバック-コールバック関数にはパラメータはありません。

ファイルの内容INPUT.TXT:

本教程官网地址:www.w3big.com

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打开成功!");
   console.log("准备读取文件!");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }

      // 仅输出读取的字节
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }

      // 关闭文件
      fs.close(fd, function(err){
         if (err){
            console.log(err);
         } 
         console.log("文件关闭成功");
      });
   });
});

次のように上記のコードが実行されます。

$ node file.js 
准备打开文件!
文件打开成功!
准备读取文件!
本教程官网地址:www.w3big.com
文件关闭成功

インターセプトファイル

文法

以下は、ファイルの構文非同期モードインターセプトであります:

fs.ftruncate(fd, len, callback)

このメソッドは、ファイルを読み取るためにファイル記述子を使用しています。

パラメータ

パラメータは以下の通り:

  • FD -ファイルディスクリプタのfs.open()メソッドを介してバック。

  • LEN -傍受ファイルの内容の長さ。

  • コールバック-コールバック関数にはパラメータはありません。

ファイルの内容INPUT.TXT:

site:www.w3big.com

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开文件!");
fs.open('input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("文件打开成功!");
   console.log("截取10字节后的文件内容。");
   
   // 截取文件
   fs.ftruncate(fd, 10, function(err){
      if (err){
         console.log(err);
      } 
      console.log("文件截取成功。");
      console.log("读取相同的文件"); 
      fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
         if (err){
            console.log(err);
         }

         // 仅输出读取的字节
         if(bytes > 0){
            console.log(buf.slice(0, bytes).toString());
         }

         // 关闭文件
         fs.close(fd, function(err){
            if (err){
               console.log(err);
            } 
            console.log("文件关闭成功!");
         });
      });
   });
});

次のように上記のコードが実行されます。

$ node file.js 
准备打开文件!
文件打开成功!
截取10字节后的文件内容。
文件截取成功。
读取相同的文件
site:www.r
文件关闭成功

ファイルを削除します

文法

以下は、ファイルを削除する構文は次のとおりです。

fs.unlink(path, callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • コールバック-コールバック関数にはパラメータはありません。

ファイルの内容INPUT.TXT:

site:www.w3big.com

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("准备删除文件!");
fs.unlink('input.txt', function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("文件删除成功!");
});

次のように上記のコードが実行されます。

$ node file.js 
准备删除文件!
文件删除成功!

再びINPUT.TXTファイルを参照してくださいし、もう存在しない見つかりませんでした。


ディレクトリを作成します

文法

以下のディレクトリを作成するための構文は次のとおりです。

fs.mkdir(path[, mode], callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • モード-デフォルトは0777で、ディレクトリのアクセス許可を設定します。

  • コールバック-コールバック関数にはパラメータはありません。

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("创建目录 /tmp/test/");
fs.mkdir("/tmp/test/",function(err){
   if (err) {
       return console.error(err);
   }
   console.log("目录创建成功。");
});

次のように上記のコードが実行されます。

$ node file.js 
创建目录 /tmp/test/
目录创建成功。

ディレクトリを読みます

文法

以下は、ディレクトリを読み込むための構文は次のとおりです。

fs.readdir(path, callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • コールバック-コールバック関数は、コールバック関数は、ディレクトリ内の配列リストファイルに対して、2つの引数が誤るファイル、errはエラーメッセージ、ファイルを取ります。

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("查看 /tmp 目录");
fs.readdir("/tmp/",function(err, files){
   if (err) {
       return console.error(err);
   }
   files.forEach( function (file){
       console.log( file );
   });
});

次のように上記のコードが実行されます。

$ node file.js 
查看 /tmp 目录
input.out
output.out
test
test.txt

ディレクトリを削除します

文法

以下は、ディレクトリを削除するための構文は次のとおりです。

fs.rmdir(path, callback)

パラメータ

パラメータは以下の通り:

  • パス-ファイルパス。

  • コールバック-コールバック関数にはパラメータはありません。

次のように我々はfile.jsファイルを作成する次に、コードは次のとおりです。

var fs = require("fs");

console.log("准备删除目录 /tmp/test");
fs.rmdir("/tmp/test",function(err){
   if (err) {
       return console.error(err);
   }
   console.log("读取 /tmp 目录");
   fs.readdir("/tmp/",function(err, files){
      if (err) {
          return console.error(err);
      }
      files.forEach( function (file){
          console.log( file );
      });
   });
});

次のように上記のコードが実行されます。

$ node file.js 
准备删除目录 /tmp/test
input.out
output.out
test
test.txt
读取 /tmp 目录
……

リファレンスファイルモジュール方式

以下は同様のNode.jsモジュール内のファイルのリストです:

いいえ。 メソッドと説明
1 fs.rename(OLDPATH、NEWPATH、コールバック)
非同期リネーム()。コールバック関数にはパラメータはありませんが、スローされることがあります。
2 fs.ftruncate(FD、LEN、コールバック)
非同期ftruncateの()。コールバック関数にはパラメータはありませんが、スローされることがあります。
3 fs.ftruncateSync(FD、LEN)
同期ftruncateの()
4 fs.truncate(パス、LEN、コールバック)
非同期TRUNCATE()。コールバック関数にはパラメータはありませんが、スローされることがあります。
5 fs.truncateSync(パス、LEN)
同期TRUNCATE()
6 fs.chown(パス、UID、GID、コールバック)
非同期のchown()。コールバック関数にはパラメータはありませんが、スローされることがあります。
7 fs.chownSync(パス、UID、GID)
同期のchown()
8 fs.fchown(FD、UID、GID、コールバック)
非同期fchown()。コールバック関数にはパラメータはありませんが、スローされることがあります。
9 fs.fchownSync(FD、UID、GID)
同期fchown()
10 fs.lchown(パス、UID、GID、コールバック)
非同期lchown()。コールバック関数にはパラメータはありませんが、スローされることがあります。
11 fs.lchownSync(パス、UID、GID)
同期lchown()
12 fs.chmod(パス、モード、コールバック)
非同期のchmod()。コールバック関数にはパラメータはありませんが、スローされることがあります。
13 fs.chmodSync(パス、モード)
同期はchmod()。
14 fs.fchmod(FD、モード、コールバック)
非同期fchmod()。コールバック関数にはパラメータはありませんが、スローされることがあります。
15 fs.fchmodSync(FDモード)
同期fchmod()。
16 fs.lchmod(パス、モード、コールバック)
非同期lchmod()。コールバック関数にはパラメータはありませんが、スローされることがあります。 MacのOS X上でのみ利用可能
17 fs.lchmodSync(パス、モード)
同期lchmod()。
18 fs.stat(パス、コールバック)
非同期のstat()。コールバック関数は、2つの引数は誤る統計をとり、統計情報はfs.Statsのオブジェクトです。
19 fs.lstat(パス、コールバック)
非同期LSTAT()。コールバック関数は、2つの引数は誤る統計をとり、統計情報はfs.Statsのオブジェクトです。
20 fs.fstat(FD、コールバック)
非同期FSTAT()。コールバック関数は、2つの引数は誤る統計をとり、統計情報はfs.Statsのオブジェクトです。
21 fs.statSync(パス)
同期のstat()。fs.Statsのは、のインスタンスを返します。
22 fs.lstatSync(パス)
同期LSTAT()。fs.Statsのは、のインスタンスを返します。
23 fs.fstatSync(FD)
同期FSTAT()。fs.Statsのは、のインスタンスを返します。
24 fs.link(srcpath、dstpath、コールバック)
非同期リンク()。コールバック関数にはパラメータはありませんが、スローされることがあります。
25 fs.linkSync(srcpath、dstpath)
同期リンク()。
26 fs.symlink(srcpath、dstpath [、タイプ ]、コールバック)
非同期シンボリックリンク()。コールバック関数にはパラメータはありませんが、スローされることがあります。 typeパラメータには、「ディレクトリ」、「ファイル」、または「ジャンクション」(デフォルト 'ファイル')に設定することができます。
27 fs.symlinkSync(srcpath、dstpath [、タイプ ])
同期シンボリックリンク()。
28 fs.readlink(パス、コールバック)
非同期READLINK()。コールバック関数は2つの引数が、linkStringを誤るかかります。
29 fs.realpath(パス[キャッシュ]、コールバック)
非同期のrealpath()。コールバック関数は2つの引数が、resolvedPathを誤るかかります。
30 fs.realpathSync(パス[キャッシュ])
同期のrealpath()。 絶対パスを返します。
31 fs.unlink(パス、コールバック)
非同期はunlink()。コールバック関数にはパラメータはありませんが、スローされることがあります。
32 fs.unlinkSync(パス)
同期はunlink()。
33 fs.rmdir(パス、コールバック)
非同期rmdirを()。コールバック関数にはパラメータはありませんが、スローされることがあります。
34 fs.rmdirSync(パス)
同期は、rmdir()。
35 fs.mkdir(パス[モード]、コールバック)
S非同期ます。mkdir(2)。コールバック関数にはパラメータはありませんが、スローされることがあります。 0777にモードをデフォルトとします。
36 fs.mkdirSync(パス[モード])
同期MKDIR()。
37 fs.readdir(パス、コールバック)
非同期のreaddir(3)。ディレクトリの内容をお読みください。
38 fs.readdirSync(パス)
同期のreaddir()は。ファイルリストの配列を返します。
39 fs.close(FD、コールバック)
非同期クローズ()。コールバック関数にはパラメータはありませんが、スローされることがあります。
40 fs.closeSync(FD)
同期近いです()。
41 fs.open(パス、フラグ[モード ]、コールバック)
非同期ファイルを開きます。
42 fs.openSync(パス、フラグ[モード ])
fs.openの同期バージョン()。
43 fs.utimes(パス、atimeを、ファイルのmtime、コールバック)
44 fs.utimesSync(パス、atimeを、ファイルのmtime)
指定されたファイルパスでファイルのタイムスタンプ、ファイルを変更します。
45 fs.futimes(FD、atimeを、ファイルのmtime、コールバック)
46 fs.futimesSync(FD、atimeを、ファイルのmtime)
ファイル記述子で指定されたファイルのタイムスタンプを変更します。
47 fs.fsync(FD、コールバック)
非同期のfsync。コールバック関数にはパラメータはありませんが、スローされることがあります。
48 fs.fsyncSync(FD)
同期にfsync。
49 fs.write(FD、バッファー、オフセット、長さ[、位置]、コールバック)
ファイル記述子で指定したファイルへの書き込みバッファの内容。
50 fs.write(FD、データ[、位置 [エンコード]]、コールバック)
ファイル記述子fd上のファイルの内容を書き込みます。
51 fs.writeSync(FD、バッファー、オフセット、長さ[、位置])
同期バージョンfs.write()。
52 fs.writeSync(FD、データ[、位置 [エンコード]])
同期バージョンfs.write()。
53 fs.read(FD、バッファー、オフセット、長さ、位置、コールバック)
ファイル記述子fd上のドキュメントの内容をお読みください。
54 fs.readSync(FD、バッファー、オフセット、長さ、位置)
同期バージョンfs.read。
55 fs.readFile(ファイル名[、オプション]、コールバック)
非同期ファイルの内容を読み取ります。
56 fs.readFileSync(ファイル名[、オプション])
57 fs.writeFile(ファイル名、データ[、オプション ]、コールバック)
ファイルの内容への非同期書き込み。
58 fs.writeFileSync(ファイル名、データ[、オプション ])
同期バージョンfs.writeFile。
59 fs.appendFile(ファイル名、データ[、オプション ]、コールバック)
非同期追加のファイルの内容。
60 fs.appendFileSync(ファイル名、データ[、オプション ])
fs.appendFileの同期バージョン。
61 fs.watchFile(ファイル名[、オプション]、リスナー)
ファイルのビューを変更します。
62 fs.unwatchFile(ファイル名[、リスナー])
ファイル名の変更を表示して停止します。
63 fs.watch(ファイル名[、オプション] [リスナー])
ファイル名の変更を確認し、ファイル名は、ファイルまたはディレクトリをすることができます。 戻るfs.FSWatcherオブジェクト。
64 fs.exists(パス、コールバック)
指定されたパスが存在して検出します。
65 fs.existsSync(パス)
同期バージョンfs.exists。
66 fs.access(パス[モード]、コールバック)
ユーザー権限の指定されたパスかどうかをテストします。
67 fs.accessSync(パス[モード])
同期バージョンfs.access。
68 fs.createReadStream(パス[、オプション])
戻るReadStreamオブジェクト。
69 fs.createWriteStream(パス[、オプション])
戻るWriteStreamオブジェクト。
70 fs.symlink(srcpath、dstpath [、タイプ ]、コールバック)
非同期シンボリックリンク()。コールバック関数にはパラメータはありませんが、スローされることがあります。

詳細については、公式サイトのファイルのモジュール説明をチェックアウト: ファイルシステム