>  기사  >  웹 프론트엔드  >  노드의 공통 모듈에 대한 간략한 분석: 경로 모듈 및 fs 모듈

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

青灯夜游
青灯夜游앞으로
2022-03-31 20:34:032331검색

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으로 문의하시기 바랍니다. 삭제