๐ํค์๋: ํ์ผ ์์คํ ์ ๊ทผ, ๋/๋น๋๊ธฐ ์ฒ๋ฆฌ, fs๋ฉ์๋, ์ด๋ฒคํธ์ฒ๋ฆฌ, ์์ธ ์ฒ๋ฆฌ,
1-1. fs ๋ชจ๋
ํ์ผ ์์คํ ์ ์ ๊ทผํ๋ ๋ชจ๋
→ ํ์ผ ์์ฑ, ์ญ์ , ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ, ํด๋ ์ง์ฐ๊ธฐ ๊ฐ๋ฅ
const fs = require('fs');
fs.readFile('./readme.txt', (err, data) => {
if (err) {
throw err;
}
console.log(data);
console.log(data.toString());
});
ํ์ผ์ ์ฝ์ ํ์ ์คํ๋ ์ฝ๋ฐฑ ํจ์๋ readFile ๋ฉ์๋์ ์ธ์๋ก ๊ฐ์ด ๋ฃ๋๋ค.
์ด ์ฝ๋ฐฑ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์๋ฌ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ค.
ํ์ผ์ ์ฝ๋ค๊ฐ ๋ฌด์จ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๊ณ , ์ ์์ ์ผ๋ก ์ฝ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฝ์์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
fs๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋ฐฑ ํ์์ ๋ชจ๋์ด๋ฏ๋ก ์ค๋ฌด์์ ์ฌ์ฉํ๊ธฐ๊ฐ ๋ถํธํ์ฌ fs ๋ชจ๋์ ํ๋ก๋ฏธ์ค ํ์์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
const fs = require('fs').promises;
fs.readFile('./readme.txt')
.then((data) => {
console.log(data);
console.log(data.toString());
})
.catch((err) => {
console.error(err);
});
๋ ธ๋ → ๋ณดํต์ ๋น๋๊ธฐ ๋ฉ์๋ ์ฌ์ฉํ๋ค. Ex) setTimeout, process.nextTick
fs๋ชจ๋ → ๋๊ธฐ ๋ฉ์๋
2-1. ๋น๋๊ธฐ ๋ฉ์๋
๋น๋๊ธฐ ๋ฉ์๋๋ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ํด๋น ํ์ผ์ ์ฝ์ผ๋ผ๊ณ ๋ง ์์ฒญํ๊ณ ๋ค์ ์์ ์ผ๋ก ๋์ด๊ฐ๋ค. ๋ฐ๋ผ์ ํ์ผ ์ฝ๊ธฐ ์์ฒญ๋ง ์ธ ๋ฒ์ ๋ณด๋ด๊ณ console.log('๋')์ ์ฐ๋๋ค. ๋์ค์ ์ฝ๊ธฐ๊ฐ ์๋ฃ๋๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋๊ฐ ๋ค์ ๋ฉ์ธ ์ค๋ ๋์ ์๋ฆฐ๋ค. ๋ฉ์ธ ์ค๋ ๋๋ ๊ทธ์ ์์ผ ๋ฑ๋ก๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๋ค.
์๋ฐฑ ๊ฐ์ I/O ์์ฒญ์ด ๋ค์ด์๋ ๋ฉ์ธ ์ค๋ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค. ๊ทธ ํ๋ก๋ ์ผ๋ง๋ ์ง ์์ฒญ์ ๋ ๋ฐ์ ์ ์๋ค. ๋์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋๊ฐ ๊ฐ๊ฐ์ ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์๋ค๊ณ ์๋ฆฌ๋ฉด ๊ทธ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
const fs = require('fs');
console.log('์์');
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('1๋ฒ', data.toString());
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('2๋ฒ', data.toString());
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('3๋ฒ', data.toString());
console.log('๋');
});
});
});
์ด์ readFile์ ์ฝ๋ฐฑ์ ๋ค์ readFile์ ๋ฃ๋๋ค.
์์๊ฐ ์ด๊ธ๋๋ ์ผ์ ์๋ค.
2-2. ๋๊ธฐ ๋ฉ์๋
๋น๋๊ธฐ์ ๋ค๋ฅด๊ฒ ์ฝ๋ฐฑํจ์๊ฐ ์๋ค.
• ๋๊ธฐ์ ๋น๋๊ธฐ: ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์๋ฃ ํ์ธํ๋ค.
• ๋ธ๋กํน๊ณผ ๋ ผ๋ธ๋กํน: ํจ์๊ฐ ๋ฐ๋ก return๋๋์ง ํ์ธํ๋ค.
๋ ธ๋์์๋ ๋๊ธฐ-๋ธ๋กํน ๋ฐฉ์๊ณผ ๋น๋๊ธฐ-๋ ผ๋ธ๋กํน ๋ฐฉ์์ด ๋๋ถ๋ถ์ด๋ค. ๋๊ธฐ-๋ ผ๋ธ๋กํน์ด๋ ๋น๋๊ธฐ-๋ธ๋กํน์ ์๋ค๊ณ ๋ด๋ ๋๋ค.
๋๊ธฐ-๋ธ๋กํน ๋ฐฉ์์์๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์๋ฃ ์ฌ๋ถ๋ฅผ ๊ณ์ ํ์ธํ๋ฉฐ, ํธ์ถํ ํจ์๊ฐ ๋ฐ๋ก return๋์ง ์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ๋๋์ผ returnํ๋ค. ๋น๋๊ธฐ-๋ ผ๋ธ๋กํน ๋ฐฉ์์์๋ ํธ์ถํ ํจ์๊ฐ ๋ฐ๋ก return๋์ด ๋ค์ ์์ ์ผ๋ก ๋์ด๊ฐ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์๋ฃ ์ฌ๋ถ๋ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๋์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋๊ฐ ์๋ฆผ์ ์ค ๋ ๋น๋ก์ ์ฒ๋ฆฌํ๋ค.
const fs = require('fs').promises;
console.log('์์');
fs.readFile('./readme2.txt')
.then((data) => {
console.log('1๋ฒ', data.toString());
return fs.readFile('./readme2.txt');
})
.then((data) => {
console.log('2๋ฒ', data.toString());
return fs.readFile('./readme2.txt');
})
.then((data) => {
console.log('3๋ฒ', data.toString());
console.log('๋');
})
.catch((err) => {
console.error(err);
});
toString ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ data๊ฐ ๋ฒํผ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
3-1. ๋ฒํผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
๋ฒํผ๋ง : ์์์ ์ฌ์ํ ์ ์์ ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๋ ๋์์ด๋ค.
๋ ธ๋๋ ํ์ผ์ ์ฝ์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ์ผ ํฌ๊ธฐ๋งํผ ๊ณต๊ฐ์ ๋ง๋ จํด๋๋ฉฐ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ค ์ฌ์ฉ์๊ฐ ์กฐ์ํ ์ ์๋๋ก ํ๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ๋ฒํผ์ด๋ค.
buffer.js
const buffer = Buffer.from('์ ๋ฅผ ๋ฒํผ๋ก ๋ฐ๊ฟ๋ณด์ธ์');
console.log('from():', buffer);
console.log('length:', buffer.length);
console.log('toString():', buffer.toString());
const array = [Buffer.from('๋์ ' ), Buffer.from('๋์ ' ), Buffer.from('๋์ด์ฐ๊ธฐ')];
const buffer2 = Buffer.concat(array);
console.log('concat():', buffer2.toString());
const buffer3 = Buffer.alloc(5);
console.log('alloc():', buffer3);
- Buffer ๊ฐ์ฒด์ ๋ฉ์๋ -
• from(๋ฌธ์์ด): ๋ฌธ์์ด์ ๋ฒํผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
• concat(๋ฐฐ์ด): ๋ฐฐ์ด ์์ ๋ ๋ฒํผ๋ค์ ํ๋๋ก ํฉ์น๋ค.
• alloc(๋ฐ์ดํธ): ๋น ๋ฒํผ๋ฅผ ์์ฑํ๋ค. ๋ฐ์ดํธ๋ฅผ ์ธ์๋ก ๋ฃ์ผ๋ฉด ํด๋น ํฌ๊ธฐ์ ๋ฒํผ๊ฐ ์์ฑ๋๋ค.
• toString(๋ฒํผ): ๋ฒํผ๋ฅผ ๋ค์ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ์ ์๋ค. ์ด๋ base64๋ hex๋ฅผ ์ธ์๋ก ๋ฃ์ผ๋ฉด ํด๋น ์ธ์ฝ๋ฉ์ผ๋ก๋ ๋ณํ ๊ฐ๋ฅํ๋ค.
๋ฌธ์ ์ )
๋งค๋ฒ ์ ์ฒด ์ฉ๋์ ๋ฒํผ๋ก ์ฒ๋ฆฌํด์ผ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์๋ค.
3-2. ์คํธ๋ฆผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
์คํธ๋ฆฌ๋ฐ : ๋ฐฉ์ก์ธ์ ์ปดํจํฐ์์ ์์ฒญ์์ ์ปดํจํฐ๋ก ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ์ ์กํ๋ ๋์์ด๋ค.
์ฆ, ๋ฒํผ์ ํฌ๊ธฐ๋ฅผ ์๊ฒ ๋ง๋ค๊ณ ์ฌ๋ฌ ๋ฒ์ ๊ฑธ์ณ ๋๋ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
- ํ์ผ์ ์ฝ๋ ์คํธ๋ฆผ ๋ฉ์๋: createReadStream
const fs = require('fs');
const readStream = fs.createReadStream('./readme3.txt', { highWaterMark: 16 });
const data = [];
readStream.on('data', (chunk) => {
data.push(chunk);
console.log('data :', chunk, chunk.length);
});
readStream.on('end', () => {
console.log('end :', Buffer.concat(data).toString());
});
readStream.on('error', (err) => {
console.log('error :', err);
});
1. createReadStream์ผ๋ก ์ฝ๊ธฐ ์คํธ๋ฆผ์ ๋ง๋ ๋ค.
2. ์ธ์๋ ์ต์ ๊ฐ์ฒด์ธ๋ฐ, highWaterMark๋ผ๋ ์ต์ ์ด ๋ฒํผ์ ํฌ๊ธฐ(๋ฐ์ดํธ ๋จ์)๋ฅผ ์ ํ ์ ์๋ ์ต์ ์ด๋ค. ๊ธฐ๋ณธ๊ฐ์ 64KB์ด์ง๋ง, ์ฌ๋ฌ ๋ฒ ๋๋ ์ ๋ณด๋ด๋ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด 16B๋ก ๋ฎ์ท๋ค.
3. readStream์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค. -> data, end, error ์ด๋ฒคํธ
4. ์๋ฌ ๋ฐ์ => error ์ด๋ฒคํธ ํธ์ถ, ํ์ผ ์ฝ๊ธฐ ์์ => data ์ด๋ฒคํธ, ํ์ผ ๋ค ์ฝ์ผ๋ฉด => end ์ด๋ฒคํธ
โ ๋ ๋ง์ ๋ฉ์๋๋ ์ฑ ์ฐธ๊ณ ..
fs : ํ์ผ ์์คํ ์ ์กฐ์ํ๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
const fs = require('fs').promises;
const constants = require('fs').constants;
fs.access('./folder', constants.F_OK | constants.W_OK | constants.R_OK)
.then(() => {
return Promise.reject('์ด๋ฏธ ํด๋ ์์');
})
.catch((err) => {
if (err.code === 'ENOENT') {
console.log('ํด๋ ์์');
return fs.mkdir('./folder');
}
return Promise.reject(err);
})
.then(() => {
console.log('ํด๋ ๋ง๋ค๊ธฐ ์ฑ๊ณต');
return fs.open('./folder/file.js', 'w');
})
.then((fd) => {
console.log('๋น ํ์ผ ๋ง๋ค๊ธฐ ์ฑ๊ณต', fd);
return fs.rename('./folder/file.js', './folder/newfile.js');
})
.then(() => {
console.log('์ด๋ฆ ๋ฐ๊พธ๊ธฐ ์ฑ๊ณต');
})
.catch((err) => {
console.error(err);
});
- 4๊ฐ์ง ๋น๋๊ธฐ ๋ฉ์๋ -
• fs.access(๊ฒฝ๋ก, ์ต์ , ์ฝ๋ฐฑ): ํด๋๋ ํ์ผ์ ์ ๊ทผํ ์ ์๋์ง๋ฅผ ํ์ธํ๋ค. ๋ ๋ฒ์งธ ์ธ์๋ก ์์๋ค(constants๋ฅผ ํตํด ๊ฐ์ ธ์ต๋๋ค)์ ๋ฃ์๋ค.
* F_OK๋ ํ์ผ ์กด์ฌ ์ฌ๋ถ, R_OK๋ ์ฝ๊ธฐ ๊ถํ ์ฌ๋ถ, W_OK๋ ์ฐ๊ธฐ ๊ถํ ์ฌ๋ถ, ํ์ผ/ํด๋๋ ๊ถํ์ด ์๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ, ์๋ฌ ์ฝ๋๋ ENOENT์ด๋ค.
• fs.mkdir(๊ฒฝ๋ก, ์ฝ๋ฐฑ): ํด๋๋ฅผ ๋ง๋๋ ๋ฉ์๋์ด๋ค. ์ด๋ฏธ ํด๋๊ฐ ์๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋จผ์ access ๋ฉ์๋๋ฅผ ํธ์ถํด์ ํ์ธํ๋ค.
• fs.open(๊ฒฝ๋ก, ์ต์ , ์ฝ๋ฐฑ): ํ์ผ์ ์์ด๋(fd ๋ณ์)๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋๋ค. ํ์ผ์ด ์๋ค๋ฉด ํ์ผ์ ์์ฑํ ๋ค ๊ทธ ์์ด๋๋ฅผ ๊ฐ์ ธ์จ๋ค. ๊ฐ์ ธ์จ ์์ด๋๋ฅผ ์ฌ์ฉํด fs.read ๋๋ fs.write๋ก ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ค. ๋ ๋ฒ์งธ ์ธ์๋ก ์ด๋ค ๋์์ ํ ๊ฒ์ธ์ง๋ฅผ ์ค์ ํ ์ ์๋ค. ์ฐ๋ ค๋ฉด w, ์ฝ์ผ๋ ค๋ฉด r, ๊ธฐ์กด ํ์ผ์ ์ถ๊ฐํ๋ ค๋ฉด a์ด๋ค. ์์ ์์ ์์๋ w๋ฅผ ํ์ผ๋ฏ๋ก ํ์ผ์ด ์์ ๋ ์๋ก ๋ง๋ค ์ ์๋ค. r์ด์๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
• fs.rename(๊ธฐ์กด ๊ฒฝ๋ก, ์ ๊ฒฝ๋ก, ์ฝ๋ฐฑ): ํ์ผ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฉ์๋์ด๋ค. ๊ธฐ์กด ํ์ผ ์์น์ ์๋ก์ด ํ์ผ ์์น๋ฅผ ์ ์ผ๋ฉด ๋๋ค. ๊ผญ ๊ฐ์ ํด๋๋ฅผ ์ง์ ํ ํ์๋ ์์ผ๋ฏ๋ก ์๋ผ๋ด๊ธฐ ๊ฐ์ ๊ธฐ๋ฅ์ ํ ์๋ ์๋ค.
fs ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์์ ์ฒ๋ฆฌํ๋ค. → ์ค๋ ๋ ํ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ค๋ ๋ ํ : ์ง์ ์ปจํธ๋กคํ ์ ์์ง๋ง, ๊ฐ์๋ ์กฐ์ ํ ์ ์์ผ๋ฉฐ, ๋์์ ์ฒ๋ฆฌ๊ฐ ๋๋ค.
๋ด๋ถ์ ์ผ๋ก ์ค๋ ๋ ํ์ ์ฌ์ฉํ๋ ๋ชจ๋ : crypto, zlib, dns.lookup ๋ฑ์ด ์๋ค.
์ฆ, ์ค๋ ๋ ํ : ๋์์ ์คํ๋๋ ์์ ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
• on(์ด๋ฒคํธ๋ช , ์ฝ๋ฐฑ): ์ด๋ฒคํธ ์ด๋ฆ๊ณผ ์ด๋ฒคํธ ๋ฐ์ ์์ ์ฝ๋ฐฑ์ ์ฐ๊ฒฐํ๋ค. event2์ฒ๋ผ ์ด๋ฒคํธ ํ๋์ ์ด๋ฒคํธ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋ฌ์์ค ์๋ ์๋ค.
• addListener(์ด๋ฒคํธ๋ช , ์ฝ๋ฐฑ): on๊ณผ ๊ธฐ๋ฅ์ด ๊ฐ๋ค.
• emit(์ด๋ฒคํธ๋ช ): ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๋ ๋ฉ์๋์ด๋ค. ์ด๋ฒคํธ ์ด๋ฆ์ ์ธ์๋ก ๋ฃ์ผ๋ฉด ๋ฏธ๋ฆฌ ๋ฑ๋กํด๋๋ ์ด๋ฒคํธ ์ฝ๋ฐฑ์ด ์คํ๋๋ค.
• once(์ด๋ฒคํธ๋ช , ์ฝ๋ฐฑ): ํ ๋ฒ๋ง ์คํ๋๋ ์ด๋ฒคํธ์ด๋ค. myEvent.emit('event3')์ ๋ ๋ฒ ์ฐ์ ํธ์ถํ์ง๋ง ์ฝ๋ฐฑ์ด ํ ๋ฒ๋ง ์คํ๋๋ค.
• removeAllListeners(์ด๋ฒคํธ๋ช ): ์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ ๊ฑฐํ๋ค. event4๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ๋ฆฌ์ค๋๋ฅผ ์ ๊ฑฐํ์ผ๋ฏ๋ก event4์ ์ฝ๋ฐฑ์ ํธ์ถ๋์ง ์๋๋ค.
• removeListener(์ด๋ฒคํธ๋ช , ๋ฆฌ์ค๋): ์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋ ๋ฆฌ์ค๋๋ฅผ ํ๋์ฉ ์ ๊ฑฐํ๋ค. ์ญ์ event5์ ์ฝ๋ฐฑ๋ ํธ์ถ๋์ง ์๋๋ค. → ๋ฆฌ์ค๋๋ฅด ๊ผญ ๋ฃ์ด์ผํ๋ค.
• off(์ด๋ฒคํธ๋ช , ์ฝ๋ฐฑ): ๋ ธ๋ 10 ๋ฒ์ ์์ ์ถ๊ฐ๋ ๋ฉ์๋๋ก, removeListener์ ๊ธฐ๋ฅ์ด ๊ฐ๋ค.
• listenerCount(์ด๋ฒคํธ๋ช ): ํ์ฌ ๋ฆฌ์ค๋๊ฐ ๋ช ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๋ค.
7-1. try/catch ๋ฌธ
setInterval(() => {
console.log('์์');
try {
throw new Error('์๋ฒ๋ฅผ ๊ณ ์ฅ๋ด์ฃผ๋ง!');
} catch (err) {
console.error(err);
}
}, 1000);
* ๋ ๋ง์ ์์ธ ์ฒ๋ฆฌ๋ ์ฑ ์ฐธ๊ณ ..
Quiz
1. ๋๊ธฐ, ๋น๋๊ธฐ ์ฝ๋์์ toString์ ์ฐ๋ ์ด์ ๋ data๊ฐ ( ) ๋๋ฌธ์ด๋ค.
2. ํ์ผ์ ์ฝ๋ ์คํธ๋ฆผ ๋ฉ์๋๋?
3. ๋ณดํต ๋ ธ๋๋ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๊ฐ?
4. ๋น๋๊ธฐ ๋ฉ์๋ ์ค ํด๋ ๋ง๋๋ ๋ฉ์๋๋?
5. fs ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ฌด์ ๋๋ฌธ์ธ๊ฐ?
6. ์์ธ์ฒ๋ฆฌ ํ ๋ ๊ตฌ๋ฌธ์?
7. ํ์ผ ์์คํ ์ ์ ๊ทผํ๋ ๋ชจ๋์?
Programming Quiz
8. createWriteStream์ผ๋ก ์ฐ๊ธฐ ์คํธ๋ฆผ์ ๋ง๋ค์ด๋ณด์์ค.
9. ๋น๋๊ธฐ ๋ฐฉ์ ์ฝ๋๋ฅผ ์๋ง๊ฒ ์ฑ์ฐ์์ค.
const fs = require('fs');
//readme2.txtํ์ผ๋ก ์ฝ์ด์ค์์ค.
console.log('์์');
console.log('1๋ฒ', data.toString());
console.log('2๋ฒ', );
console.log('3๋ฒ', );
console.log('๋');
});
});
});
Answer
1. ๋ฒํผ
2. createReadStream
3. ๋น๋๊ธฐ ๋ฉ์๋
4. fs.mkdir
5. ์ค๋ ๋ ํ
6. try/catch ๋ฌธ
7. fs๋ชจ๋
8.
const fs = require('fs');
const writeStream = fs.createWriteStream('./writeme2.txt');
writeStream.on('finish', () => {
console.log('ํ์ผ ์ฐ๊ธฐ ์๋ฃ');
});
writeStream.write('์ด ๊ธ์ ์๋๋ค.
');
writeStream.write('ํ ๋ฒ ๋ ์๋๋ค.');
writeStream.end();
9.
const fs = require('fs');
console.log('์์');
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('1๋ฒ', data.toString());
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('2๋ฒ', data.toString());
fs.readFile('./readme2.txt', (err, data) => {
if (err) {
throw err;
}
console.log('3๋ฒ', data.toString());
console.log('๋');
});
});
});
์ถ์ฒ) ์กฐํ์ , ใNode.js ๊ต๊ณผ์ ๊ฐ์ 3ํใ, ๊ธธ๋ฒ(2022), 3์ฅ ๋ ธ๋ ๊ธฐ๋ฅ
Corner node.js 2ํ
Editor : Eunki
[๋ ธ๋ 2ํ] #4.๋ ธ๋ ๊ธฐ๋ฅ ์์๋ณด๊ธฐ(1) (0) | 2024.10.11 |
---|---|
[๋ ธ๋ 2ํ] #3.์์๋ฌ์ผ ํ ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2024.10.11 |
[๋ ธ๋ 2ํ] #2.JavaScript ๋ฐ๋ณต๋ฌธ, ๋ฐ๋ณต์, ๊ฐ์ฒด (0) | 2024.10.04 |
[๋ ธ๋ 2ํ] #1.JavaScript ๋ณ์ ์ ์ธ, ์กฐ๊ฑด๋ฌธ, ํจ์, ๋ฐฐ์ด (0) | 2024.10.04 |