- 따라서 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
- user별 폴더를 생성(username으로 폴더명 생성해주세요.)
- 각 폴더에 userinfo.txt을 생성한 후 Username, Identifier, job을 아래 양식으로 모두 저장해주세요.
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)=>{});;
});
});