[Node.js基礎(chǔ)]學(xué)習(xí)⑥--fs模塊

Node.js內(nèi)置的fs模塊就是文件系統(tǒng)模塊,負責(zé)讀寫文件,提供了異步和同步的方法。

異步讀文件

'use strict';

var fs = require('fs');

fs.readFile('sample.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
});

sample.txt文件必須在當(dāng)前目錄下,且文件編碼為utf-8

正常讀取時,err參數(shù)為null,data參數(shù)為讀取到的String

取發(fā)生錯誤時,err參數(shù)代表一個錯誤對象,data為undefined。

讀取圖片文件

'use strict';

var fs = require('fs');

fs.readFile('sample.png', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        console.log(data.length + ' bytes');
    }
});

回調(diào)函數(shù)的data參數(shù)將返回一個Buffer對象

Buffer對象轉(zhuǎn)換成String:

// Buffer -> String
var text = data.toString('utf-8');
console.log(text);

String轉(zhuǎn)換成Buffer:

// String -> Buffer
var buf = new Buffer(text, 'utf-8');
console.log(buf);

同步讀文件

'use strict';

var fs = require('fs');

var data = fs.readFileSync('sample.txt', 'utf-8');
console.log(data);
try {
    var data = fs.readFileSync('sample.txt', 'utf-8');
    console.log(data);
} catch (err) {
    // 出錯了
}

寫文件

'use strict';

var fs = require('fs');

var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function (err) {
    if (err) {
        console.log(err);
    } else {
        console.log('ok.');
    }
});

如果傳入的數(shù)據(jù)是String,默認按UTF-8編碼寫入文本文件,如果傳入的參數(shù)是Buffer,則寫入的是二進制文件。

同步寫文件

'use strict';

var fs = require('fs');

var data = 'Hello, Node.js';
fs.writeFileSync('output.txt', data);

stat

'use strict';

var fs = require('fs');

fs.stat('sample.txt', function (err, stat) {
    if (err) {
        console.log(err);
    } else {
        // 是否是文件:
        console.log('isFile: ' + stat.isFile());
        // 是否是目錄:
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            // 文件大小:
            console.log('size: ' + stat.size);
            // 創(chuàng)建時間, Date對象:
            console.log('birth time: ' + stat.birthtime);
            // 修改時間, Date對象:
            console.log('modified time: ' + stat.mtime);
        }
    }
});

https://github.com/michaelliao/learn-javascript/tree/master/samples/node/fs

read_image_file_async.js

'use strict'

const fs=require('fs');

console.log('>>>> BEGIN >>>>');

fs.readFile(__dirname+'/'+'sample.png',function(err,data){
    //'sample.png'  => d:\\workspace\\js\\sample.png
    //__dirname+'/'+'sample.png'   => d:\\workspace\\js\\test\\sample.png

    if(err){
        console.log(err);
    }else{
        console.log(data);
        console.log(data.length+' bytes');
    }
});

console.log('>>> END >>>');

>>>> BEGIN >>>>
>>> END >>>
<Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 2c 00 00 01 2c 08 06 00 00 00 79 7d 8e 75 00 00 20 00 49 44 41 54 78 9c ec bd bd ba 2d 49 92 ... >
73770 bytes

read_image_file_sync.js

'use strict';

// read from 'sample.png'

const fs = require('fs');

console.log('>>> BEGIN >>>')

var data = fs.readFileSync(__dirname+'/'+'sample.png');
console.log(data);
console.log(data.length + ' bytes');

console.log('>>> END >>>')

>>>> BEGIN >>>>
<Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 2c 00 00 01 2c 08 06 00 00 00 79 7d 8e 75 00 00 20 00 49 44 41 54 78 9c ec bd bd ba 2d 49 92 ... >
73770 bytes
>>>> END >>>>

read_text_file_async.js

'use strict';

// read text from 'sample.txt'

const fs = require('fs');

console.log('>>> BEGIN >>>')

fs.readFile(__dirname+'/'+'sample.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
    }
});

console.log('>>> END >>>')

>>>>  BEGIN >>>>
>>>>  END >>>>
Nodejs教程:File I/O is provided by simple wrappers around standard POSIX functions. To use this module do require('fs'). All the methods have asynchronous and synchronous forms.

read_text_file_sync.js

'use strict';

// read text from 'sample.txt'

const fs = require('fs');

console.log('>>> BEGIN >>>')

var data = fs.readFileSync('sample.txt', 'utf-8');
console.log(data);

console.log('>>> END >>>')

use_buffer.js

'use strict';

// read binary data from 'sample.txt'

const fs = require('fs');

var data = fs.readFileSync('sample.txt')
console.log(data);
console.log(data.length + ' bytes');
console.log('First three bytes: ' + data[0] + ', ' + data[1] + ', ' + data[2]);

// Buffer -> String
var text = data.toString('utf-8');
console.log(text);

// String -> Buffer
var buf = new Buffer(text, 'utf-8');
console.log(buf);

<Buffer 4e 6f 64 65 6a 73 e6 95 99 e7 a8 8b ef bc 9a 46 69 6c 65 20 49 2f 4f 20 69 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 73 69 6d 70 6c 65 20 77 72 61 70 ... >
181 bytes
First three bytes: 78,111,100
Nodejs教程:File I/O is provided by simple wrappers around standard POSIX functions. To use this module do require('fs'). All the methods have asynchronous and synchronous forms.
<Buffer 4e 6f 64 65 6a 73 e6 95 99 e7 a8 8b ef bc 9a 46 69 6c 65 20 49 2f 4f 20 69 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 73 69 6d 70 6c 65 20 77 72 61 70 ... >

use_stat.js

'use strict';

const fs = require('fs');

fs.stat('sample.txt', function (err, stat) {
    if (err) {
        console.log(err);
    } else {
        console.log('isFile: ' + stat.isFile());
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            console.log('size: ' + stat.size);
            console.log('birth time: ' + stat.birthtime);
            console.log('modified time: ' + stat.mtime);
        }
    }
});

isFile: true
isDirectory: false
size: 181
birth time: Wed Jul 05 2017 14:05:20 GMT+0800 (中國標準時間)
modified time: Wed Jul 05 2017 14:05:20 GMT+0800 (中國標準時間)

write_text_file_async.js

'use strict';

// write text to 'output.txt'

const fs = require('fs');

console.log('>>> BEGIN >>>')

var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function (err) {
    if (err) {
        console.log(err);
    } else {
        console.log('ok.');
    }
});

console.log('>>> END >>>')

write_text_file_sync.js

'use strict';

// write text to 'output.txt'

const fs = require('fs');

console.log('>>> BEGIN >>>')

var data = 'Hello, Node.js';
fs.writeFileSync('output.txt', data);

console.log('>>> END >>>')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,618評論 19 139
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,357評論 0 17
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,608評論 0 6
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,733評論 2 41
  • 我不知道每個人的一生是如何度過的,可是我清楚的知道一個人——那就是自己。 我不清楚別人每天都在做什么,想什么...
    御貓樂余閱讀 197評論 0 0

友情鏈接更多精彩內(nèi)容