Node.jsのファイルシステム
8999 ワード
Node.jsのファイルシステム
JavaScriptはファイルを操作する能力がないですが、Node.jsはできます.Node.jsはファイルを操作するインターフェースを提供しましたが、インターフェースが多すぎます.主にいくつかのよく使うインターフェースを使います.
ファイルシステムモジュールは、標準的なPOSIXファイルI/O動作をパッケージ化したセットである.このモジュールはrequire('fs')によって使用されます.すべての方法には同期と非同期の二つのモードがある.
Node.jsのファイルシステムAPI
1.ファイルを読み込むNode.jsは2つの方法でファイルを読み込むことを提供しています.一つは非同期でファイルを読み込むことです.
4.1まずファイルを開けてみます.
JavaScriptはファイルを操作する能力がないですが、Node.jsはできます.Node.jsはファイルを操作するインターフェースを提供しましたが、インターフェースが多すぎます.主にいくつかのよく使うインターフェースを使います.
ファイルシステムモジュールは、標準的なPOSIXファイルI/O動作をパッケージ化したセットである.このモジュールはrequire('fs')によって使用されます.すべての方法には同期と非同期の二つのモードがある.
Node.jsのファイルシステムAPI
1.ファイルを読み込むNode.jsは2つの方法でファイルを読み込むことを提供しています.一つは非同期でファイルを読み込むことです.
var fs = require("fs");
// ,
function readFile (fileUrl) {
console.log("-- --");
fs.readfile(fileUrl,function(err,data){
if(err){
console.log("-- --")
}
console.log(" :"+data.toString());
})
}
readFile("./src/test.txt");
// ,
// ,
//
function readFileSync(fileUrl) {
console.log("---- ----");
var data = fs.readFileSync(fileUrl);
console.log(" " + data.toString());
console.log("---- ----")
}
readFileSync("./src/test.txt");
// , , , ;
2.ファイルに書き込む// fs.writeFile(filename,data,[options],callback);
/**
* filename, ,
* data, , Buffer
* [options],flag,mode( ),encoding,
* callback , err
*/
//
var w_data = " ";
fs.writeFile("./src/test.txt",w_data,function (err) {
if (err) {
console.error(err);
}
console.log(" ")
})
// , , 。
// ;
3.追加内容
// fs.appendFile(filename,data,[options],callback)
/**
* filename, ,
* data,
* options, ,flag,mode。。。
* callback, err
*/
//
var appendData = " ";
fs.appendFile("./src/test.txt",appendData,function (err) {
if (err) {
console.error(err);
}
console.log(" !")
})
4.ファイルを開け、ファイルを読み込み、ファイルを切り取り、ファイルを書き込み、ファイルを閉じます.4.1まずファイルを開けてみます.
fs.open(filename,flag,[mode],callback)
/**
* filename,
* flags, ,
* mode, ,
* callback, err, fd, fd ,
* fd , ,window
*/
/*Flag
r 。 。
r+ 。 。
rs 。
rs+ 。
w , 。
wx 'w', , 。
w+ , 。
wx+ 'w+', , 。
a , 。
ax 'a', , 。
a+ , 。
ax+ 'a+', , 。
*/
一例の書き方:fs.open("./src/test.txt","r+",function (err,fd) {
if (err) {
console.error(err);
}
console.log(fd)// fd windows , ,
// , id, , id
console.log(" ")
// , , , , 。
})
4.2ファイルを読み込み、開けられました.必ず読みます.file.read(filename,buffer,offset,length,position,callback)
/**
* fd, fs.open
* buffer, Buffer ,v8
* offset, , ,
* length, ,
* position, , ;
* callback(err, bytesRead, buffer), ,bytesRead ,
*/
ファイルの読み込み例:fs.open("./src/test.txt","r+",function (err,fd) {
if (err) {
console.error(err)
}
console.log(" ")
console.log(" ");
var buffer = new Buffer(1024);
// fd read ,
fs.read(fd,buffer,0,buffer.length,0,function (err,bytesRead,buffer) {
if (err) {
console.error(err)
}
console.log(bytesRead+" ")
if (bytesRead>0) {
console.log(" "+buffer.toString())
}
})
})
4.3書類の切り取りfs.// fs.ftruncate(fd,len,callback)
/**
* fd, fd
* len,
* callback, ,
*/
ファイルの例を切り取り、切り取りが完了したらファイルを閉じます.// , , , ,
fs.open("./src/test.txt","r+",function (err,fd) {
if (err) {
console.log(err)
}
console.log(" !")
console.log(" ");
// , ,
fs.ftruncate(fd,10,function (err) {
if (err) {
console.log(err)
}
console.log(" !");
console.log(" ");
fs.read(fd,buffer,0,buffer.length,0,function (err,bytesRead) {
if (err) {
console.error(err)
}
console.log(bytesRead+" ");
if (bytesRead>0) {
console.log(buffer.slice(0,bytesRead).toString())
}
//
fs.close(fd,function (err) {
if (err) {
console.log(err)
}
console.log(" ")
})
})
})
})
,
4.4文書を閉じる具体的な使い方は、上の例に示すようにfs.close(fd,callback)
/**
* fd, fd
* callback, , err
*/
4.5ファイルに書き込む// fs.write(fd,buffer,offset,length,position,callback);
/**
* fd, fs.open
* buffer, Buffer ,v8
* offset, , ,
* length, ,
* position, , ;
* callback(err, written, buffer), ,written ,buffer
*/
ファイルのインスタンスを書き込み:fs.open("./src/test.txt","r+",function (err,fd) {
if (err) {
console.error(err)
}
console.log(" ");
console.log(" ");
var buf = new Buffer(" ");
fs.write(fd,buf,0,buf.length,0,function (err,written,buffer) {
if (err) {
console.error(err)
}
// , ,utf8
console.log(written);
// text.txt
console.log(buffer.toString())
})
fs.close(fd,function (err) {
if (err) {
console.error(err)
}
console.log(" ")
})
})
5.ファイル情報の取得// fs.stat(filename,callback)
/**
* filename, ,
* callback, err, stats,
*/
ファイル情報のインスタンスを取得:fs.stat(__dirname+"/test.txt",function (err,stats) {
if (err) {
console.error(err)
}
console.log(stats)
})
6.フォルダの作成
// fs.mkdir(filname,callback)
/**
* filename,
* callback, err
*/
fs.mkdir(__dirname+"/test/",function (err) {
if (err) {
console.error(err)
}
console.log(" !")
})
7.フォルダの読み込み// fs.readdir(filename,{options},callback)
/**
* filename,
* options,
* callback, err, files,
*/
フォルダの例を読み込みます.
// test , , index.js,index.html
fs.readdir(__dirname+"/test",function (err,files) {
if (err) {
console.error(err)
}
console.log(" !")
console.log(files)
files.forEach(function (value,index) {
console.log(value+"---"+index)
})
})
8.ファイルの削除// fs.unlink(filename,callback)
/**
* filename,
* callback, err
*/
ファイルの削除例:
// test index.txt ,
fs.unlink(__dirname+"/test/index.txt",function (err) {
if (err) {
console.error(err)
}
console.log(" !")
})
9.フォルダの削除fs.rmdir(fliename,callback);
/**
* filename,
* callback, err
*/
// ,
function cleanDir(filename) {
// , files
var files = fs.readdirSync(filename);
// files , forEach
files.forEach((item) => {
var stats = fs.statSync(filename+"/"+item);
//
if (stats.isDirectory()) {
//
cleanDir(filename+"/"+item)
}else{
// , ,
fs.unlinkSync(filename+"/"+item);
console.log(" "+filename+"/"+item+" ")
}
})
}
// ,
function deleteDir(filename) {
// , files
var files = fs.readdirSync(filename);
// files , length
if (files.length>0) {
var tempFile = 0;
files.forEach((item) => {
tempFile++;
deleteDir(filename+"/"+item);
})
// , filename , ,
// ,
if (tempFile==files.length) {
fs.rmdirSync(filename)
console.log(" "+filename+" ")
}
}else{
fs.rmdirSync(filename)
console.log(" "+filename+" ")
}
}
cleanDir(__dirname + "/test");
deleteDir(__dirname + "/test");
基本的にNode.jsのファイルシステムで一番よく使われているアプリは大体一回触れました.