📝

10. fs(file_system) 모듈

  • fs 모듈에 readFile은 비동기입니다.
  • 따라서 sync를 유지하고 싶을 때에는 readFileSync를 사용해주세요. (요청이 수만건이면 비동기가 유리합니다.)
  • const fs = require('fs').promises 의 형태로 사용을 많이 합니다. 이렇게 사용을 하면 fs.readFile().then().then().catch().then()의 형태로 코딩이 가능합니다.
  • 만약 readFileSync를 사용하면 코드에서 애러가 날 경우 노드가 멈출 수 있는 치명적인 단점이 있으므로 항상 try로 묶어줍니다.
// 파일이름 : 006_fs(file_system)\app.js // 공식문서 링크 : https://nodejs.org/dist/latest-v16.x/docs/api/fs.html const fs = require('fs'); // rename, readFile, writeFile, appendFile, copyFile, mkdir // 1 // let 변수 = '이호준' // 사용자 이름 // let 날짜 = new Date() // fs.rename('./test.txt', `./${변수}${날짜.getMilliseconds()}.txt`, (err) => { // console.log(err); // }) // 2 // fs.readFile('./test.txt', 'utf8', (err, data) => { // console.log(err); // console.log(data); // }) // 3 // fs.readdir('./', (err, data) => { // console.log(err); // console.log(data); // }) // 4 // fs.writeFile('./test2.txt', 'hello world 2', (err)=>{ // console.log(err); // }); // 5 // fs.appendFile('./test2.txt', '\nhello world 3', (err)=>{ // console.log(err); // }); // 6 // fs.copyFile('./test2.txt', './test3.txt', (err)=>{ // console.log(err); // }); // 7 fs.mkdir('./yoyo', (err)=>{ console.log(err); });
// 파일이름 : 006_fs(file_system)\test.txt hello world
// 파일이름 : 006_fs(file_system)\test2.txt hello world 2hello world 3
// 파일이름 : 006_fs(file_system)\test3.txt hello world 2hello world 3
 
 

Username, Identifier, Job uhojun, 123112, programmer ujunjun, 123113, coder ujahyne, 123114, data scientist ugildong, 123115, front-end developer ulicat, 123116, back-end developer
  1. user별 폴더를 생성(username으로 폴더명 생성해주세요.)
  1. 각 폴더에 userinfo.txt을 생성한 후 Username, Identifier, job을 아래 양식으로 모두 저장해주세요.
    1. Username : hojunlee Identifier : 999999 Job : promgrammer
 

 
//hint code const fs = require('fs'); fs.readFile('./user.csv', 'utf8', (err, csvdata) => { // console.log(err); console.log(csvdata.split('\r\n')); })
 

 
정답코드
const fs = require('fs'); fs.readFile('./user.csv', 'utf8', (err, csvdata) => { // console.log(err); splitData = csvdata.split('\r\n') .slice(1) .map(v => v.split(', ')); splitData.forEach((value)=>{ [이름, 번호, 직업] = value; fs.mkdir(`./${이름}`, (err)=>{}); }); splitData.forEach((value)=>{ [이름, 번호, 직업] = value; userWriteData = `Username : ${이름} \nIdentifier : ${번호} \nJob : ${직업}`; fs.writeFile(`./${이름}/userinfo.txt`, userWriteData, (err)=>{});; }); });