NodeJs基礎学習--fsモジュール(7)

6952 ワード

nodeJsでは、すべてのファイル操作はfsコアモジュールによって実現され、ファイルディレクトリの作成、削除、クエリ、およびファイルの読み込みと書き込みを含む.fsモジュールでは、すべての方法は同期と非同期の2つの方法に分けて実現される.sync拡張子は同期方法であり、拡張子がない場合は非同期方法である.
ファイルのパーミッション
linux&unixでは、システムにおけるファイルの権限は、ファイルの所有者(自分)、グループ(ホームグループ)、他のユーザ(見知らぬ人)によって割り当てられ、ファイルの操作権限は、読み書き実行(8進)4、2、1、0に分けられます.0代表は権限を持っていません.
nodeJSマークビットフラグ
rファイルを読み、ファイルが存在しない場合は例外を投げます.r+ファイルを読み込み、書き込みします.ファイルが存在しない場合は異常です.RSはファイルを読み、書き込み、オペレーティングシステムがローカルファイルシステムのキャッシュをバイパスすることを指示する.wファイルに書き込み、ファイルが存在しないと作成され、存在しない場合はクリアしてから書き込みます.wxファイルに書き込み、並べて開く.w+ファイルを読み込み、書き込み、ファイルが存在しない場合はファイルを作成し、存在する場合はクリアしてから書き込みます.wx++はw+と似ています.他の方式で開けます.a書き込みを追加し、ファイルが存在しない場合はファイルを作成する.axはaと似ています.他の方式で開けます.a+読み取り、書き込みを追加し、存在しない場合は作成します.ax+はa+と似ています.他の方法で開けます.
ファイル記述子fd
オペレーティングシステムは、各開いたファイルに対して、ファイル記述子という数値標識を割り当て、ファイル操作はこれらのファイル記述子を使用して、それぞれの特定のファイルを識別し追跡し、Windowシステムは異なる概念類似のメカニズムを使用してリソースを追跡し、ユーザを便利にするために、NodeJSは異なるオペレーティングシステム間の違いを抽象化している.開いているすべてのファイルに数値のファイル記述子が割り当てられています.
ノードJSでは、1つのファイルを操作するごとに、ファイル記述子がインクリメントされ、ファイル記述子は一般的に3から始まります.前には0、1、2つの比較的特殊な記述子がありますので、それぞれプロcess.stdin(標準入力)、process.stdout(標準出力)、プロcess.stder(エラー出力)を表します.
fsモジュール
一、同期と非同期
require('fs')を使用してfsモジュールをロードします.モジュール内のすべての方法は同期と非同期の2つの形態があります.非同期法におけるコールバック関数の最初のパラメータは常に異常パラメータ(exception)を残しています.もし方法が成功したら、このパラメータはnullまたはundefinedです.同期方法が実行され、結果が返ってきたら、後続のコードが実行されます.非同期法は、戻り結果をコールバック関数で受信し、すぐに後続コードを実行することができる.非同期の書き方:コールバック関数があります.
var fs = require('fs'); //   fs  

fs.unlink('/tmp/shiyanlou', function(err) {
    if (err) {
        throw err;
    }
    console.log('      /tmp/shiyanlou');
});
同期の書き方:
var fs = require('fs');

fs.unlinkSync('/tmp/shiyanlou'); // Sync        
console.log('      /tmp/shiyanlou');
二、readFileはファイルを読み込みます.
//fs.readFile(filename,[option],callback)
    //filename String    
    //option Object
        //encoding String |null default=null
        //flag String default='r'
    //callback Function

var fs = require('fs'); //   fs  
fs.readFile('./test.txt', function(err, data) {
    //       /  
    if (err) {
        throw err;
    }
    //       
    console.log(data);
});

nodeはファイルを読みます.jsはプログラムを実行します.ファイルの内容は2進データです.
ファイルの内容を表示するには、toString()または出力符号化を設定することができます.
//toString()  :
fs.readFile('./test.txt', function(err, data) {
    //       /  
    if (err) {
        throw err;
    }
    //       
    console.log(data.toString());
});
//      
fs.readFile('./test.txt', 'utf-8', function(err, data) {
    //       /  
    if (err) {
        throw err;
    }
    //       
    console.log('utf-8: ', data.toString());
  //   console.log(data);   
});
同期の書き方には、コールバック関数fs.readFileSyncがありません.
WriteFile書き込みファイル
//  fs.writeFile(filename,data,[options],callback)       。

//    :
//filename String    
//data String|buffer
//option Object
    //encoding String |nulldefault='utf-8'
    //mode Number default=438(aka 0666 in Octal)
    //flag Stringdefault='w'
//callback Function

//demo

var fs = require('fs'); //   fs  

//       (              )
//          
fs.writeFile('./test2.txt', 'test test', function(err) {
    if (err) {
        throw err;
    }

    console.log('Saved.');

    //          
    fs.readFile('./test2.txt', 'utf-8', function(err, data) {
        if (err) {
            throw err;
        }
        console.log(data);
    });
});
パラメータoption{}のflagsのデフォルト値wはファイルを空にします.追加したいなら、flagsパラメータを伝えることができます.
ファイルの読み書き操作のステップ
fs.read&&fs.write機能はfs.readFile&&&fs.writeFileに似ていますが、もっと下の操作を提供します.
fs.readとfs.writeを使う前に、fs.openを使ってファイルとfs.closeを開けてファイルを閉じる必要があります.
1.fs.open
fs.open(path,flags,mode,calback)メソッドはファイルを開いてfs.read()を読みます.
パラメータ:
  • パスパス
  • flagsがファイルを開く方式
  • [mode]はファイルの権限です.
  • calbackコールバック関数
  • flagsとmodelは上に紹介されています.
    2.fs.close
    fs.close(fd,calback)メソッドは、ファイルパラメータを閉じるために使用されます.fdはファイルの記述子であり、識別するために使用されます.fs.open()メソッドのコールバック関数で返された第2のパラメータはfdです.calback閉鎖成功コールバック関数;
    3.fs.read
    fs.read(fd,buffer,offset,length,position,calback)は6つのパラメータを受信する.
  • fdファイル記述子は、fs.open()方法におけるコールバック関数から返される第2のパラメータを受信しなければならない.
  • バfferは、読み取ったデータを格納するバfferオブジェクトである.
  • offsetは、データをバfferに格納する開始位置を指定する.
  • lengthは、ファイル中のデータを読み出すバイト数を指定します.
  • positionは、ファイル内でファイルの内容を読み取る開始位置を指定します.
  • calbackコールバック関数のパラメータは以下の通りです.
  • errは異常を出すために使用されます.
  • bytes Readファイルからコンテンツの実際のバイト数を読み出す.
  • ブザーが読み取られるキャッシュオブジェクト.
  • 123連結のデモは以下の通りです.
    var fs = require('fs'); //   fs  
    
    //     
    fs.open('./testread.txt', 'r', function(err, fd) {
        if (err) {
            throw err;
        }
        console.log('open file success.');
        var buffer = new Buffer(255);
        //     
        fs.read(fd, buffer, 0, 10, 0, function(err, bytesRead, buffer) {
            if (err) {
                throw err;
            }
            //    buffer      
            console.log(bytesRead, buffer.slice(0, bytesRead).toString());
    
            //     
            fs.close(fd);
        });
    });
    
    fs.write()
    fs.write(fd,buffer,offset,length[,position],calback(err,bytes Written,buffer)は6つのパラメータを受信します.
  • fdファイル記述子.
  • ブザーバッファにデータが書き込まれます.bufferサイズの設定は8の倍数が一番よく、効率が高いです.
  • offset bufferに書き込まれたオフセット量
  • レングス指定ファイル読出しバイト数
  • position(integer)は、ファイル読み込みの開始位置を指定します.この項目がnullであれば、現在のファイルポインタの位置からデータの読み込みを開始します.
  • calbackは3つのパラメータをフィードバックしました.err,bytes Read,buffer
  • エラ異常
  • bytes Read:読み出しバイト数
  • ブザー:バッファオブジェクト
  • var fs = require('fs'); //   fs  
    
    //     
    fs.open('./testwrite.txt', `w`, function(err, fd) {
        if (err) {
            throw err;
        }
        console.log('open file success.');
        var buffer = new Buffer('shiyanlou');
        //     
        fs.write(fd, buffer, 0, 6, 0, function(err, bytesWritten, buffer) {
            if (err) {
                throw err;
            }
    
            console.log('write success.');
            //    buffer      
            console.log(bytesWritten, buffer.slice(0, bytesWritten).toString());
    
            //     
            fs.close(fd);
        });
    });
    
    ディレクトリ操作
    1、ディレクトリを作成する
    fs.mkdir(path,[mode],calback)はディレクトリを作成します.pathは作成するディレクトリです.[mode]はディレクトリの権限です.calbackはコールバック関数です.
    var fs = require('fs'); //   fs  
    //    newdir   
    fs.mkdir('./newdir', function(err) {
        if (err) {
            throw err;
        }
        console.log('make dir success.');
    });
    
    2、ディレクトリを読み込む
    fs.readdir(path,calback)を使ってファイルディレクトリを読みだします.
    var fs = require('fs'); //   fs  
    
    fs.readdir('./newdir', function(err, files) {
        if (err) {
            throw err;
        }
        // files     
        //                    
        console.log(files);
    });