ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ์ผ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋ฐฉ์์๋ ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์๋ค. ํ๋๋ ๋ฒํผ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ์์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ์คํธ๋ฆผ์ ์ด์ฉํ๋ ๋ฐฉ์์ด๋ค. ๋ฒํผ๋ง๊ณผ ์คํธ๋ฆฌ๋ฐ์ด๋ผ๋ ๋จ์ด๋ฅผ ์ผ์์ํ์์ ๋ง์ด ๋ค์ด๋ดค์ ๊ฒ์ด๋ค. ๋ณดํต ์์์ ์์ฒญํ ๋ ๋ง์ด ๋ณผ ์ ์๋ ์ฉ์ด๋ค์ด๋ค. ์์์ ๋ก๋ฉํ ๋ ๋ฒํผ๋ง์ ํ๋ค๊ณ ํ๊ณ , ์์์ ์ค์๊ฐ์ผ๋ก ์ก์ถํ ๋๋ ์คํธ๋ฆฌ๋ฐํ๋ค๊ณ ํ๋ค.
๋ฒํผ๋ง์ ์์์ ์ฌ์ํ ์ ์์ ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๋ ๋์์ด๊ณ , ์คํธ๋ฆฌ๋ฐ์ ๋ฐฉ์ก์ธ์ ์ปดํจํฐ์์ ์์ฒญ์์ ์ปดํจํฐ๋ก ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ์ ์กํ๋ ๊ฒ์ด๋ค. ์คํธ๋ฆฌ๋ฐ์ ํ๋ ๊ณผ์ ์์ ๋ฒํผ๋ง์ ํ ์๋ ์๋ค. ์ ์ก์ด ๋๋ฌด ๋๋ฆฌ๋ฉด ํ๋ฉด์ ๋ด๋ณด๋ด๊ธฐ๊น์ง ์ต์ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ผ ํ๊ณ , ์์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ ์๋๋ณด๋ค ๋น ๋ฅด๊ฒ ์ ์ก๋์ด๋ ๋ฏธ๋ฆฌ ์ ์ก๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ธ๋์ ๋ฒํผ์ ์คํธ๋ฆผ๋ ๋น์ทํ ๊ฐ๋ ์ด๋ค. ํ์ผ์ ์ฝ์ผ๋ฉด ๋ฒํผํ์์ผ๋ก ์ถ๋ ฅํ๋ค. ๋ ธ๋๋ ํ์ผ์ ์ฝ์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ์ผ ํฌ๊ธฐ๋งํผ ๊ณต๊ฐ์ ๋ง๋ จํด๋๋ฉฐ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ค ์ฌ์ฉ์๊ฐ ์กฐ์ํ ์ ์๋๋กํ๋๋ฐ ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ๋ฒํผ๋ค.
- ๋ฒํผ๋? ์ฉ๋์ด ํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ํ ๋ฒ์ ์ ์ก์ ํ์ง ๋ชปํ๋๊น ํน์ ๋จ์ ๋งํผ ๋ฌถ์ด์ ์ ์ก์ ํ๋ค. ๊ทธ๋ BUFFER์ ํฌ๊ธฐ๋งํผ BUFFER์ ๋ด์์ ์ ์กํ๋ค. ์ ์ก ์๋ ์ฐจ์ด์ ๋ํ ์ฑ๋ฅ์ ๋ณด์ํ๊ธฐ ์ํด ์ฌ์ฉ, ์ ๋ ฅ ์๋์ ๋นํด ์ถ๋ ฅ์๋๊ฐ ๋๋ฆฐ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ฅํ๋ ๊ณต๊ฐ.
- ์คํธ๋ฆผ์ด๋? ๋ค ์ฐฌ ๋ฒํผ๋ฅผ ์ ์กํ๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ๋ค์ด ์์ง์ผ ์ ์๋๋ก ์ค๊ฐ ๋ค๋ฆฌ ์ญํ .
์๋ฅผ ๋ค์ด ์ฌ์ฉ์๋ 1์ด์ 100๊ฐ์ ๋ฐ์ดํฐ, ํ๋ก๊ทธ๋จ์ 1์ด์ 5๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ๊ฐ์ ์ ํด๋ณด์. ํ๋ก๊ทธ๋จ ์ฒ๋ฆฌ๋ฅผ ์งํํ๋ ๋์ ์ ๋ ฅ์ฅ์น๋ฅผ ํตํด ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ ๋๊ธฐ๋ฅผ ํด์ผํ๋ ์ํฉ์ด ๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋ผ๋ ์์๊ณต๊ฐ์ ์ ์ฅํด๋๊ณ ํ๋ก๊ทธ๋จ์์ ์ฒ๋ฆฌํ ์ ์๋ ์ํฉ์ด๋๊ฑฐ๋ ๋ฒํผ๊ฐ ๊ฝ์ฐจ๊ฒ ๋๋ฉด ๋ฒํผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ ์ก์ ํ๋ค.

์ด๋ฐ์์ผ๋ก ๋ฒํผ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด API ํธ์ถํ์๋ฅผ ์ค์ฌ ์ ์ถ๋ ฅ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋ณด๋ฉด ์คํธ๋ฆผ๊ณผ ๋ฒํผ๋ ํญ์ ๊ฐ์ด ๋ฌถ์ฌ ๋ค๋๋๊ฒ์ด ์ข์ ๊ฒ๊ฐ์ง๋ง ๋น ๋ฅธ ๋ฐ์์ด ์๊ตฌ๋๋ ๊ฒ์๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ด ์ด๋ค์ง๋ ์ฆ์ ์ ์ก์ด ์ด๋ฃจ์ด์ ธ ๋น ๋ฅธ ๋ฐ์ ์๋๋ฅผ ๋ณด์ฌ์ค์ผํ๊ธฐ ๋๋ฌธ์ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ง ์๋ค.
์ถ์ฒ ์๋ฃ
tcpschool.com/cpp/cpp_io_streamBuffer
ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ์ ๊ด๋ จ๋ ๋ฌธ์
ํ์ผ์ ์ฝ์ด 1MB ๋จ์๋ก ๋ถํ ํ์ฌ ์ ์ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
const fs = require("fs");
//let data = [];
const LIMIT = 1024*1024;
let read_size = 0;
let count = 1;
let write_stream = fs.createWriteStream('test.txt.' + count);
//๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ผ ์ ์๋ ์คํธ๋ฆผ ์์ฑ
const read_stream = fs.createReadStream('./test2.jpg');
read_stream.on('data', function(chunk) {
read_size += chunk.length;
if (read_size >= LIMIT * count) {
const now_data = chunk.slice(0, LIMIT - (read_size - chunk.length));
const next_data = chunk.slice(LIMIT - (read_size - chunk.length));
write_stream.write(now_data);
write_stream.end();
count++;
write_stream = fs.createWriteStream('test.txt.' + count);
write_stream.write(next_data);
} else {
write_stream.write(chunk);
}
});
read_stream.on('open', function(chunk) {
console.log('open');
});
read_stream.on('close', function() {
write_stream.end();
console.log('close file');
});
read_stream.on('error', function(err) {
console.log('error', err);
});
๋ถํ ๋ ํ์ผ์ ์ฐ์์ผ๋ก ์ด์ด๋ถ์ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑ (ํ์ผ ๋ฆฌ์คํธ๋ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ค.)
const fs = require("fs");
const files = ['test.txt.1', 'test.txt.2'];
let write_stream = fs.createWriteStream('test222.jpg');
function readAndWrite(idx) {
if (idx >= files.length) {
write_stream.end();
console.log("end");
return;
}
const file_path = files[idx];
//๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ผ ์ ์๋ ์คํธ๋ฆผ ์์ฑ
const read_stream = fs.createReadStream(file_path);
read_stream.on('data', function(chunk) {
write_stream.write(chunk);
});
read_stream.on('open', function(chunk) {
console.log('open');
});
read_stream.on('close', function() {
console.log('close file');
readAndWrite(idx + 1);
});
read_stream.on('error', function(err) {
console.log('error', err);
});
}
readAndWrite(0);
'Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] IntelliJ์ Node.js ํ๊ฒฝ ์ค์ ํ๊ธฐ (0) | 2021.04.08 |
---|
- Total
- Today
- Yesterday
- ์ดํด๋ฆฝ์ค ํ๊ธ ์ธ์ฝ๋ฉ
- ์ดํด๋ฆฝ์ค ์ค์น
- ๊ฒ์ํ ์ญ์
- ๊ฐ๋ฐํ๊ฒฝ๊ตฌ์ถ
- ์๋ฃ๊ตฌ์กฐ
- ๊ฒ์ํ ์กฐํ
- ๋ถํธ ์๋์์ฑ
- ๋ณ๋ช ์ฒ๋ฆฌ
- ๊ฒ์ํ๋ง๋ค๊ธฐ
- ๊ฒ์๋ฌผ์กฐํ
- java jdk ์ค์น
- ์๋ฐ
- ์คํ๋ง๋ถํธ ์๋์์ฑ
- ๊ฒ์๋ฌผ ์ญ์
- ๊ฐ๋ฐ
- mysql์ค์น
- typeAliases
- ์๊ณ ๋ฆฌ์ฆ
- ์จ๋ฆฌ์์ค
- Algorithm
- java ํ๊ฒฝ๋ณ์
- tomcat์ค์น
- ์ ์ฒด๊ฒ์๋ฌผ ์กฐํ
- Java
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |