๊ฒฝ๋กœ ๋‹ค๋ฃจ๊ธฐ

path

๊ฒฝ๋กœ ์ •๋ณด

  • ํ˜„์žฌ ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ, ํด๋” ๊ฒฝ๋กœ
  • __filename
  • __dirname
  • var path = __dirname + '/image.png';

๊ฒฝ๋กœ ๋‹ค๋“ฌ๊ธฐ

  • path.normalize()
  • .. : ๋ถ€๋ชจ ํด๋”
  • . : ๊ฐ™์€ ํด๋”

๊ฒฝ๋กœ ๊ตฌ์„ฑ ์š”์†Œ

  • path.basename() : ํŒŒ์ผ ์ด๋ฆ„, ๊ฒฝ๋กœ ์ค‘ ๋งˆ์ง€๋ง‰ ์š”์†Œ
  • path.dirname() : ํŒŒ์ผ์ด ํฌํ•จ๋œ ํด๋” ๊ฒฝ๋กœ
  • path.extname() : ํ™•์žฅ์ž

๊ฒฝ๋กœ ๊ตฌ์„ฑ ๊ฐ์ฒด

  • var info = pathUtil1.parse('/usr/temp/local/image.png');
console.log(info);
{ root: '/',
  dir: '/usr/temp/local',
  base: 'image.png',
  ext: '.png',
  name: 'image' }

๊ฒฝ๋กœ ๋งŒ๋“ค๊ธฐ

  • pathUtil.sep : ๊ตฌ๋ถ„์ž /, \
  • pathUtil.join() : ๊ฒฝ๋กœ ๋ถ™์ด๊ธฐ
  • pathUtil.format() : ๊ฒฝ๋กœ ๋งŒ๋“ค๊ธฐ

ํŒŒ์ผ ์‹œ์Šคํ…œ

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ชจ๋“ˆ : fs

์ฃผ์š”๊ธฐ๋Šฅ

  • ํŒŒ์ผ ์ƒ์„ฑ/์ฝ๊ธฐ/์“ฐ๊ธฐ/์‚ญ์ œ
  • ํŒŒ์ผ ์ ‘๊ทผ์„ฑ/์†์„ฑ
  • ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ/์ฝ๊ธฐ/์‚ญ์ œ
  • ํŒŒ์ผ ์ŠคํŠธ๋ฆผ
  • ๋ชจ๋“  ํ”Œ๋žซํผ์— 100% ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ

ํŠน์ง•

  • ๋น„๋™๊ธฐ์™€ ๋™๊ธฐ ๋ฐฉ์‹ ํ•จ์ˆ˜ ๋ชจ๋‘ ์ œ๊ณต

  • ๋น„๋™๊ธฐ์‹ : callback โ†’ non-block

  • ๋™๊ธฐ์‹ : + Sync โ†’ block ์„ฑ๋Šฅ์ƒ ์ฃผ์˜ , ๋ฐ˜ํ™˜๊ฐ’ ์ด์šฉ

  • ๋™๊ธฐ์‹

try{
  var data = fs.readFileSync('textfile.txt','utf8');
}catch(exception){
  console.error('ReadFile Error : ', exception);
}
  • ๋น„๋™๊ธฐ์‹
fs.readFile('textfile.txt','utf8',function(error,data){
  if(err){
    console.error('ReadFile Error : ', exception);
  }else{
    //์ •์ƒ์ฒ˜๋ฆฌ
  }
});

ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‹ค๋ฃจ๊ธฐ

ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

  • File descriptor
  • File Path

FileDescription๋กœ ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

  • fs.read(fd, buffer, offset, length, position, callback);
  • fs.readSync(fd, buffer, offset, length, position);

ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

  • fs.readFile(filename, option, callback);
  • fs.readFileSync(filename, option);

FileDescription ์–ป๊ธฐ : Open ํ•จ์ˆ˜

  • var fd = fs.openSync(path, flags)
  • fs.open(path,flags,function(err,fd){});

flag

  • r : read
  • w : write
  • a : add

File Close

  • fs.close(fd, callback)
  • fs.closeSync(fd)

ํŒŒ์ผ ์ข…๋ฅ˜

  • ๋ฌธ์ž์—ด ์ฝ๊ธฐ : ์ธ์ฝ”๋”ฉ
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ๊ธฐ : buffer
  • ์ธ์ฝ”๋”ฉ ์„ค์ • ์•ˆํ•˜๋ฉด buffer๋กœ ์ฝ๋Š”๋‹ค.

ํŒŒ์ผ ์ฝ๊ธฐ ์˜ˆ์ œ - ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ๋™๊ธฐ์‹

var fd = fs.openSync(file, 'r'); // Get File descriptor
var buffer = new Buffer(10); // Make Buffer
 
var byte = fs.readSync(fd, buffer, 0, buffer.length, 0); // Read File
console.log('File Contenst : ', buffer.toString('utf-8')); // Set Encoding
 
fs.closeSync(fd); // File Close

ํŒŒ์ผ ์ฝ๊ธฐ ์˜ˆ์ œ - ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ๋น„๋™๊ธฐ

fs.open(file,'r',function(err,fd2){
  var buffer2 = new Buffer(20);
  fs.read(fd2, buffer2, 0, buffer2.length, 10, function(err,byteRead,buffer){
    console.log('File Read ', byteRead, 'bytes');
    console.log('File Content : ', buffer.toString('utf-8'));
    fs.close(fd,function(err){});
  })
})

ํŒŒ์ผ ์ฝ๊ธฐ - ๋™๊ธฐ์‹

  • var data = fs.readFileSync(file, 'utf-8');
  • var imageData = fs.readFileSync('./image.jpg');

ํŒŒ์ผ ์ฝ๊ธฐ - ๋น„๋™๊ธฐ, ์ธ์ฝ”๋”ฉ

fs.readFile(file, 'UTF-8', function (err,name) {
 
});

ํŒŒ์ผ ์ƒํƒœ - ์กด์žฌ ํ™•์ธ

ํŒŒ์ผ ์กด์žฌ ํ™•์ธํ•˜๊ธฐ

  • fs.access(Sync)
  • fs.stat(Sync)

ํŒŒ์ผ ์ ‘๊ทผ ๊ฐ€๋Šฅ ํ™•์ธํ•˜๊ธฐ

  • fs.access(path, callback)
  • fs.accessSync(path, model)

์ ‘๊ทผ ๋ชจ๋“œ

  • fs.F_OK : ์กด์žฌ ํ™•์ธ
  • fs.R_OK, W_OK, X_OK : ์ฝ๊ธฐ / ์“ฐ๊ธฐ / ์‹คํ–‰ ์—ฌ๋ถ€ ํ™•์ธ

ํŒŒ์ผ ์ ‘๊ทผ ์—ฌ๋ถ€ ํ™•์ธ ํ›„ ์ฝ๊ธฐ - ๋™๊ธฐ

try{
  fs.accessSync(file,fs.F_OK);
}catch(exception){
  //ํŒŒ์ผ ์—†์Œ
}

ํŒŒ์ผ ์ ‘๊ทผ ์—ฌ๋ถ€ ํ™•์ธ ํ›„ ์ฝ๊ธฐ - ๋น„๋™๊ธฐ

fs.access(file, fs.F_OK | fs.R_OK, function(err){
  if(err){
      //์—๋Ÿฌ ์ฒ˜๋ฆฌ
  }
  fs.readFile(file, 'utf8',function(err,data){
    if(err){
      //์—๋Ÿฌ ์ฒ˜๋ฆฌ
    }
  })
})

ํŒŒ์ผ ์ƒํƒœ

ํŒŒ์ผ ์ƒํƒœ ์–ป๊ธฐ

  • fs.stat(path, callback)
  • fs.statSync(path)
  • stats.isFile(), stats.isDirectory() : ํŒŒ์ผ, ๋””๋ ‰ํ† ๋ฆฌ ์—ฌ๋ถ€
  • stats.size : ํŒŒ์ผ ํฌ๊ธฐ
  • stats.birthtime : ์ƒ์„ฑ์ผ
  • stats.atime : ์ ‘๊ทผ ์‹œ๊ฐ„
  • stats.mtime : ์ˆ˜์ •์ผ

ํŒŒ์ผ ์ƒํƒœ ํ™•์ธ : ๋™๊ธฐ

try{
  var stats = fs.statSync(file);
}catch(err){
  console.err('Cannot Access File', err);
}

ํŒŒ์ผ ์ƒํƒœ ํ™•์ธ : ๋น„๋™๊ธฐ

fs.stat(file, function(err,stats){
  if(err){
    console.err('Cannot Access File', err);
  }
})

ํŒŒ์ผ์— ์ €์žฅ

  • fs.write(fd, data, callback)
  • fs.writeFile(filename,data,callback)
  • fs.writeFileSync(filename,data)
  • fd,filename : ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ, ํŒŒ์ผ ๊ฒฝ๋กœ
  • fd,data : ๋ฌธ์ž์—ด ํ˜น์€ Buffer
  • Encoding : ๋ฌธ์ž์—ด ์ €์žฅ ์‹œ ์ธ์ฝ”๋”ฉ
  • ๊ฐ™์€ ํŒŒ์ผ ์ด๋ฆ„ โ†’ ๋ฎ์–ด์“ฐ๊ธฐ

ํŒŒ์ผ์— ๋‚ด์šฉ ์ถ”๊ฐ€

  • fs.appendFile(file,data,callback)
  • fs.appendFileSync(file,data)

ํŒŒ์ผ ์‚ญ์ œ

  • fs.unlink(path, callback)
  • fs.unlinkSync(path)

ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ/์ด๋™

  • fs.rename(oldPath,newPath,callback)
  • fs.renameSync(oldPath,newPath,callback)

๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

  • fs.mkdir(path,callback)
  • fs.mkdirSync(path,callback)
  • ๊ฐ™์€ ์ด๋ฆ„์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์‹คํŒจ

๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ

  • fs.rmdir(path,callback)
  • fs.rmdirSync(path)
  • ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ์‹คํŒจ

๋””๋ ‰ํ† ๋ฆฌ ๋‚ด ํŒŒ์ผ ๋ชฉ๋ก

  • fs.readdir(path, callback)
  • fs.readdirSync(path)
  • ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์—๋Ÿฌ

ํŒŒ์ผ ์ŠคํŠธ๋ฆผ ๋งŒ๋“ค๊ธฐ

  • fs.createReadStream(path)
  • fs.createWriteStream(path)

๋ฒ„ํผ

๋ฒ„ํผ ์–ป๊ธฐ

ํŒŒ์ผ์—์„œ ์ฝ๊ธฐ

  • var fileBuffer = fs.readFileSync('image.jpg');

๋„คํŠธ์›Œํฌ์—์„œ ์–ป๊ธฐ

  • socket.on('data',function(data){})

๋ฒ„ํผ ๋งŒ๋“ค๊ธฐ

  • new Buffer(size)
  • new Buffer(array)
  • new Buffer(str)
  • ์‚ฌ์ด์ฆˆ๋Š” ๊ณ ์ •์ 

๋ชจ๋“ˆ ํ•จ์ˆ˜

  • Buffer.byteLength(String,encoding) : ๋ฐ”์ดํŠธ ๊ธธ์ด
  • Buffer.compare(buf1,buf2) : ๋น„๊ต
  • Buffer.concat(list, totallength) : ๋ถ™์ด๊ธฐ
  • Buffer.isBuffer(obj) : ๋ฒ„ํผ ํ™•์ธ
  • Buffer.isEncoding(encoding) : ์ธ์ฝ”๋”ฉ

๊ฐ์ฒด ๋ฉ”์†Œ๋“œ

  • buffer.length
  • buf.fill(value)
  • buf.slice(start,end)
  • buf.copy()