Skip to content

Node.js 파일 통계

모든 파일에는 Node.js를 사용하여 검사할 수 있는 세부 정보 집합이 있습니다. 특히 fs 모듈에서 제공하는 stat() 메서드를 사용합니다.

파일 경로를 전달하여 호출하면 Node.js가 파일 세부 정보를 가져온 후, 전달한 콜백 함수를 2개의 매개변수(오류 메시지 및 파일 통계)와 함께 호출합니다.

js
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
  if (err) {
    console.error(err)
  }
  // `stats`에서 파일 통계에 접근할 수 있습니다.
})

Node.js는 파일 통계가 준비될 때까지 스레드를 차단하는 동기 메서드도 제공합니다.

js
import fs from 'node:fs'
try {
  const stats = fs.statSync('/Users/joe/test.txt')
} catch (err) {
  console.error(err)
}

파일 정보는 stats 변수에 포함됩니다. stats를 사용하여 어떤 종류의 정보를 추출할 수 있을까요?

다음과 같이 많은 정보를 추출할 수 있습니다.

  • stats.isFile()stats.isDirectory()를 사용하여 파일이 디렉터리인지 파일인지 여부
  • stats.isSymbolicLink()를 사용하여 파일이 심볼릭 링크인지 여부
  • stats.size를 사용하여 파일 크기(바이트 단위)

다른 고급 메서드도 있지만, 일상적인 프로그래밍에서 주로 사용하는 것은 이 정도입니다.

js
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
  if (err) {
    console.error(err)
    return
  }
  stats.isFile() // true
  stats.isDirectory() // false
  stats.isSymbolicLink() // false
  stats.size // 1024000 //= 1MB
})

원하는 경우 fs/promises 모듈에서 제공하는 프로미스 기반 fsPromises.stat() 메서드를 사용할 수도 있습니다.

js
import fs from 'node:fs/promises'
try {
  const stats = await fs.stat('/Users/joe/test.txt')
  stats.isFile() // true
  stats.isDirectory() // false
  stats.isSymbolicLink() // false
  stats.size // 1024000 //= 1MB
} catch (err) {
  console.log(err)
}

파일 시스템 모듈 문서에서 fs 모듈에 대해 자세히 알아볼 수 있습니다.