노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

青灯夜游
풀어 주다: 2022-04-26 21:12:29
앞으로
2174명이 탐색했습니다.

node에는 경로, 파일 등에 대한 작업을 포함하여 다양한 작업을 수행하는 데 도움이 되는 내장 개체가 많이 있습니다. 다음 글에서는 node.js에서 흔히 사용되는 내장 모듈 중 path 모듈과 fs 모듈을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

경로 모듈

경로 모듈은 경로와 파일을 처리하는 데 사용되며 다양한 방법을 제공합니다.

path.resolve

경로와 파일 이름을 연결해야 한다는 요구 사항이 있습니다.

const basePath = '/user/why' const filename = 'abc.txt'
로그인 후 복사

그러면 누군가가 문자열 접합을 사용하여 접합할 것입니다.

const filePath = basePath + '/' + filename console.log(filePath);
로그인 후 복사

이 결과에는 문제가 없지만, 다른 시스템을 고려할 때 Windows 시스템은 \ 또는 /를 경로 구분자로 사용할 수 있는 반면, Mac OS, Linux 및 Unix 운영 체제는 /를 경로 구분자로 사용합니다.

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

위 문제를 해결하려면path.resolve를 사용하여 경로를 연결할 수 있습니다.

const path = require('path') const basePath = '/user/why' const filename = 'abc.txt' const filePath = path.resolve(basePath, filename) console.log(filePath);
로그인 후 복사

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

경로에서 정보 가져오기

  • dirname: 파일의상위 폴더 가져오기
  • basename:파일 이름 가져오기
  • extname:파일 확장자
  • 가져오기
아아아아

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

경로 접합

여러 경로를 접합하고 싶지만 운영 체제마다 서로 다른 구분 기호를 사용할 수 있는 경우 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));
로그인 후 복사

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

파일과 폴더 연결

파일과 폴더를 연결하려면 path.resolve를 사용할 수 있습니다.

const path = require('path') const basepath = '/User/haha' const filename = 'abc.txt' const filePath = path.join(basepath, filename) console.log(filePath);
로그인 후 복사

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

path.resolve와 path.join은 경로를 연결하는 데에도 사용할 수 있는데 차이점은 무엇인가요?

const basepath = 'User/haha' const filename = 'abc.txt'
로그인 후 복사

차이가 보입니다.

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

fs 모듈

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);
로그인 후 복사

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

방법 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 모듈

fs.readFile('./abc.txt', (err, data) => { console.log(data); })
로그인 후 복사

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

폴더 만들기

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); }) }
로그인 후 복사

폴더의 모든 파일 가져오기 이때 디렉터리는 아래와 같으며 재귀를 사용할 수 있습니다.

노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!