[Node.js 기초] 학습⑥ - fs 모듈

7766 단어
Node.js에 내장된 fs 모듈은 바로 파일 시스템 모듈로 파일을 읽고 쓰는 것을 책임지고 비동기적이고 동기화하는 방법을 제공한다.

비동기 파일 읽기

'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 파일은 현재 디렉터리에 있어야 하며, 파일은utf-8로 인코딩되어야 합니다
정상적으로 읽을 때err 매개 변수는null이고 데이터 매개 변수는 읽은String입니다
오류가 발생했을 때err 매개 변수는 오류 대상을 대표하고 데이터는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');
    }
});

콜백 함수의 데이터 매개 변수는 Buffer 객체를 반환합니다.

Buffer 객체를 String으로 변환하려면 다음과 같이 하십시오.

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

String을 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.');
    }
});

들어오는 데이터가 String이면 기본적으로 UTF-8 인코딩으로 텍스트 파일을 쓰고, 들어오는 인자가 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);
            //  , 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 >>>

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 >>>>

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);


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.


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 >>>')

좋은 웹페이지 즐겨찾기