node에는 경로, 파일 등에 대한 작업을 포함하여 다양한 작업을 수행하는 데 도움이 되는 내장 개체가 많이 있습니다. 다음 글에서는 node.js에서 흔히 사용되는 내장 모듈 중 path 모듈과 fs 모듈을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!
경로 모듈은 경로와 파일을 처리하는 데 사용되며 다양한 방법을 제공합니다.
경로와 파일 이름을 연결해야 한다는 요구 사항이 있습니다.
const basePath = '/user/why' const filename = 'abc.txt'
그러면 누군가가 문자열 접합을 사용하여 접합할 것입니다.
const filePath = basePath + '/' + filename console.log(filePath);
이 결과에는 문제가 없지만, 다른 시스템을 고려할 때 Windows 시스템은 \ 또는 /를 경로 구분자로 사용할 수 있는 반면, Mac OS, Linux 및 Unix 운영 체제는 /를 경로 구분자로 사용합니다.
위 문제를 해결하려면path.resolve를 사용하여 경로를 연결할 수 있습니다.
const path = require('path') const basePath = '/user/why' const filename = 'abc.txt' const filePath = path.resolve(basePath, filename) console.log(filePath);
여러 경로를 접합하고 싶지만 운영 체제마다 서로 다른 구분 기호를 사용할 수 있는 경우 path.join 기능을 사용할 수 있습니다.
const path = require('path') const filePath = '/User/haha/abc.txt' console.log(path.dirname(filePath)); console.log(path.basename(filePath)); console.log(path.extname(filePath));
파일과 폴더를 연결하려면 path.resolve를 사용할 수 있습니다.
const path = require('path') const basepath = '/User/haha' const filename = 'abc.txt' const filePath = path.join(basepath, filename) console.log(filePath);
path.resolve와 path.join은 경로를 연결하는 데에도 사용할 수 있는데 차이점은 무엇인가요?
const basepath = 'User/haha' const filename = 'abc.txt'
차이가 보입니다.
nodejs대부분의 파일 시스템 API는 세 가지 작동 방법을 제공합니다.
동기 파일 작동: 코드가 차단되고 더 이상 실행되지 않습니다.
비동기 콜백 함수 작동 파일: 코드가 차단되지 않습니다. 콜백 함수가 전달되어야 합니다. 결과를 얻으면 콜백 함수가
비동기 Promise 작업을 실행합니다. 파일: 메서드 작업을 호출하면 차단되지 않습니다. fs.promises는 then을 통해 처리되고 catch될 수 있는 Promise를 반환합니다.
방법 1 동기 작업: fs.statSync
const basepath = '../User/haha' const filename = './abc.txt' const othername = './haha.js' const filePath1 = path.join(basepath, filename, othername) console.log(filePath1); const filePath2 = path.resolve(basepath, filename, othername) console.log(filePath2);
방법 2 비동기 작업
const fs = require('fs') const filepath = './abc.txt' const info = fs.statSync(filepath) console.log('后续需要执行的代码'); console.log(info);
방법 3: Promise
fs.stat(filepath, (err, info) => { if(err) { console.log(err); return } console.log(info); console.log(info.isFile()); // 判断是否是一个文件 console.log(info.isDirectory()); // 判断是否是一个文件夹 }) console.log('后续需要执行的代码');
노드 할당 열려 있는 모든 파일에번호유형파일 설명자를 입력합니다. 모든 파일 시스템 작업은 이러한 파일 설명자를 사용하여 각 특정 파일을 식별하고 추적합니다.
fs.open() 메서드는 새 파일 설명자 fd를 할당하는 데 사용됩니다. 할당되면 파일 설명자를 사용하여 파일에서 데이터를 읽거나, 파일에 데이터를 쓰거나, 파일에 대한 정보를 요청할 수 있습니다.
fs.promises.stat(filepath).then(info => { console.log(info); }).catch(err => { console.log(err); }) console.log('后续需要执行的代码');
fs.readFile(path[, options], callback): 파일 내용 읽기
fs.writeFile(path[, options], callback): 파일에 내용 쓰기
옵션 매개변수:
플래그: 쓰기 방법
인코딩: 문자 인코딩
파일 쓰기
const fs = require('fs') fs.open('./abc.txt', (err, fd) => { if(err) { console.log(err); return } // 通过文件描述符去获取文件信息 fs.fstat(fd, (err, info) => { console.log(info); }) })
파일 읽기
fs.writeFile('./abc.txt', content, {flag: "a"}, err => { console.log(err); })
인코딩이 채워지지 않은 경우 결과 버퍼(바이너리)가 반환됩니다.
fs.readFile('./abc.txt', (err, data) => { console.log(data); })
fs.mkdir() 또는 fs.mkdirSync를 사용하여 새 폴더를 만듭니다.
fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => { console.log(data); })
fs.readdir
const fs = require('fs') // 创建文件夹 const dirname = './haha' if(!fs.existsSync(dirname)) { fs.mkdir(dirname, (err) => { console.log(err); }) }
폴더의 모든 파일 가져오기 이때 디렉터리는 아래와 같으며 재귀를 사용할 수 있습니다.
const fs = require('fs') const path = require('path') const dirname = './haha' function getFiles(dirname) { fs.readdir(dirname, {withFileTypes: true}, (err, files) => { // console.log(files); for(let file of files) { // 判断是否是文件夹 if(file.isDirectory()) { const filepath = path.resolve(dirname, file.name) getFiles(filepath) } else { console.log(file.name); } } }) } getFiles(dirname)
可以使用fs.rename对文件夹进行重命名。
fs.rename('./haha', './xixi', err => { console.log(err); })
更多node相关知识,请访问:nodejs 教程!
위 내용은 노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!