목차
동기 및 비동기
파일 쓰기
从文件中读取
读取目录的内容
删除文件
创建目录
删除目录
目录/文件重命名
向文件中添加内容
웹 프론트엔드 프런트엔드 Q&A 노드의 fs 모듈은 무엇입니까

노드의 fs 모듈은 무엇입니까

Jul 12, 2022 pm 08:01 PM
nodejs​ node.js node

노드에서 fs 모듈은 파일을 동작시키는데 사용되는 모듈인 "파일 시스템 모듈"을 말합니다. fs 모듈의 대부분 API는 세 가지 작동 방법을 제공합니다. 1. 동기 파일 작업: 코드가 차단되고 계속 실행되지 않습니다. 2. 비동기 콜백 함수 작업 파일: 코드가 차단되지 않으며 콜백 함수가 필요합니다. 결과를 얻으면 콜백 함수가 실행됩니다. 3. 비동기 Promise 작업 파일: 코드가 차단되지 않으며 fs.promises를 통해 메서드 작업을 호출하여 Promise가 반환됩니다.

노드의 fs 모듈은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, nodejs 버전 16, DELL G3 컴퓨터.

파일 시스템 모듈(줄여서 fs)을 사용하면 컴퓨터의 파일 시스템에 액세스하고 상호 작용할 수 있습니다.

fs 모듈은 파일 운영을 위해 Node.js에서 공식적으로 제공하는 모듈입니다. 사용자의 파일 작업 요구 사항을 충족하는 일련의 방법과 속성을 제공합니다.

  • fs.readFile() 메서드, 지정된 파일의 내용을 읽는 데 사용됨

  • fs.writeFile() 메서드, 지정된 파일에 콘텐츠를 쓰는 데 사용됨 JavaScript 코드를 사용하려는 경우

fs 사용 방법

파일 시스템 모듈은 핵심 Node.js 모듈입니다. 즉, 설치할 필요가 없습니다. 우리가 해야 할 유일한 일은 fs 모듈을 자체 파일로 가져오는 것입니다.

그러므로 파일 상단에 다음을 추가하세요:

const fs = require('fs')
로그인 후 복사

이제 접두사 fs를 사용하여 파일 시스템 모듈에서 모든 메서드를 호출할 수 있습니다.

또는 아래와 같이 fs API에서 필요한 메서드를 가져올 수도 있습니다.

const { writeFile, readFile } = require('fs')
로그인 후 복사

참고: 편의를 위해 경로 모듈도 가져와야 합니다. 이는 파일 및 디렉터리 경로 작업을 가능하게 하는 또 다른 핵심 Node.js 모듈입니다.

fs 모듈을 가져온 후 파일을 추가하세요:

const path = require('path')
로그인 후 복사

파일 시스템 모듈을 사용하는 경우 경로 모듈이 필요하지 않습니다. 하지만 그것은 우리에게 많은 도움이 됩니다!

동기 및 비동기

fs 모듈의 파일 작업은 일반적으로 동기 및 비동기 API를 모두 지원하며 비동기에는 콜백 함수 및 promsie 양식도 포함됩니다. 동기화 뒤에는 일반적으로 동기화라는 단어가 옵니다.

fs 모듈의 API는 주로 세 가지 작업 방법을 제공합니다.

  • 동기 파일 작업: 코드가 차단되고 계속 실행되지 않습니다.

  • 비동기 콜백 함수 파일 작업: 코드가 차단되지 않고 실행이 중단됩니다. 결과가 얻어지면 콜백 함수가 함수에 전달되어야 합니다.

  • 비동기 약속 작업 파일: fs.promises를 통해 메서드 작업을 호출하면 코드가 차단되지 않습니다. 그때까지 처리해서 잡아요.

기본적으로 모든 fs 메서드는 비동기식이라는 점에 유의해야 합니다. 그러나 메서드 끝에 Sync를 추가하면 동기화된 버전을 사용할 수 있습니다.

예를 들어 writeFile 메서드의 동기 버전은 writeFileSync입니다. 동기 메서드는 코드를 동기적으로 완료하므로 기본 스레드를 차단합니다. Node.js에서 메인 스레드를 차단하는 것은 나쁜 습관으로 간주되므로 그렇게 해서는 안 됩니다.

그래서 아래에서는 모두 파일 시스템 모듈에서 비동기 방식을 사용하겠습니다.

파일 쓰기

Node.js 애플리케이션에서 파일을 쓰려면 writeFile 메서드를 사용하세요. writeFile 方法。

writeFile 方法至少接受以下参数:

  • 文件名
  • 内容
  • 回调

如果指定的文件已经存在,它会将旧内容替换为您作为参数提供的内容。如果指定的文件不存在,则创建一个新文件。

导入 fspath 模块后,在文件中编写以下代码:

fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => {
  if (err) throw err

  process.stdout.write('创建成功!')
})
로그인 후 복사

上面的代码将创建了一个名为 content.txt 的新文件,并添加了文本 All work and no play makes Jack a dull boy! 作为内容。如果存在任何错误,回调函数将抛出该错误。否则,它将向控制台输出文件创建成功。

writeFile 还有其他变体,例如:

  • fs.writeFileSync — 同步写入文件
  • fsPromises.writeFile — 使用基于 Promise 的 API 写入文件

查看此要点:https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92

从文件中读取

在读取文件之前,需要创建并存储文件的路径。path 模块的路径在这里很方便。

使用 join 模块中的 path 方法,您可以创建文件路径,如下所示:

const filePath = path.join(process.cwd(), 'content.txt')
로그인 후 복사

第一个参数 process.cwd() 返回当前工作目录。现在您已经有了文件路径,可以读取文件的内容了。

在文件中编写以下代码:

fs.readFile(filePath, (error, content) => {
  if (error) throw error

  process.stdout.write(content)
})
로그인 후 복사

readFile

writeFile 메소드는 최소한 다음 매개변수를 허용합니다: 🎜
    🎜Filename🎜🎜Contents🎜🎜Callback🎜🎜🎜지정된 파일이 이미 존재하는 경우 이전 콘텐츠를 원하는 콘텐츠로 대체합니다. 매개변수 콘텐츠로 제공합니다. 지정한 파일이 없으면 새 파일이 생성됩니다. 🎜🎜fspath 모듈을 가져온 후 파일에 다음 코드를 작성합니다. 🎜
    fs.readdir(process.cwd(), (error, files) => {
      if (error) throw error
    
      console.log(files)
    })
    로그인 후 복사
    로그인 후 복사
    🎜위 코드는 content.txt<라는 파일을 생성합니다. / code>를 입력하고 <code>모든 일을 하고 놀지 않으면 Jack을 둔한 소년으로 만듭니다!라는 텍스트를 콘텐츠로 추가했습니다. 오류가 있으면 콜백 함수에서 해당 오류가 발생합니다. 그렇지 않으면 파일이 성공적으로 생성되었다는 메시지가 콘솔에 출력됩니다. 🎜🎜writeFile 다음과 같은 다른 변형도 있습니다: 🎜
      🎜fs.writeFileSync — 동기식으로 파일 쓰기 🎜🎜fsPromises.writeFile — Promise 기반 API를 사용하여 파일에 쓰기 🎜🎜🎜🎜 이 요지를 확인하세요: https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92 🎜🎜

      파일에서 읽기 🎜 🎜파일을 읽기 전에 파일 경로를 생성하고 저장해야 합니다. path 여기서는 모듈 경로가 편리합니다. 🎜🎜join 모듈의 path 메소드를 사용하면 다음과 같이 파일 경로를 생성할 수 있습니다: 🎜
      fs.unlink(filePath, error => {
        if (error) throw error
      
        console.log(&#39;文件已删除!&#39;)
      })
      로그인 후 복사
      로그인 후 복사
      🎜첫 번째 매개변수 process.cwd()< /code > 현재 작업 디렉터리를 반환합니다. 이제 파일 경로가 있으므로 파일 내용을 읽을 수 있습니다. 🎜🎜파일에 다음 코드를 작성하세요: 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) =&gt; { if (err) throw err console.log(&amp;#39;已成功创建文件夹!&amp;#39;) })</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜 <code>readFile 메소드는 최소 두 개의 매개변수를 허용합니다: 🎜
      • 文件的路径
      • 回调

      如果有错误,它会抛出一个错误。否则,它会在终端中输出文件内容。

      readFile 还有其他变体,例如:

      • fs.readFileSync — 同步写入文件
      • fsPromises.readFile — 使用基于 Promise 的 API 写入文件

      查看此要点:https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d

      读取目录的内容

      在目录中显示文件与读取文件内容非常相似。但是,不是传递文件路径,而是传递当前工作目录(我们可以传递任何其他目录)。

      然后,传递一个回调函数来处理响应。在文件中编写以下代码:

      fs.readdir(process.cwd(), (error, files) => {
        if (error) throw error
      
        console.log(files)
      })
      로그인 후 복사
      로그인 후 복사

      到目前为止,我们只使用 process.stdout.write 将内容输出到终端。但是,您可以简单地使用 console.log,就像上面的代码片段一样。

      如果运行该应用程序,我们应该会得到一个包含目录中所有文件的数组。

      查看此要点:https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e

      删除文件

      文件系统模块有一种方法,允许您删除文件。但是,需要注意的是,它只适用于文件,不适用于目录。

      当以文件路径作为参数调用 unlink 方法时,它将删除该文件。将以下代码段添加到文件中:

      fs.unlink(filePath, error => {
        if (error) throw error
      
        console.log(&#39;文件已删除!&#39;)
      })
      로그인 후 복사
      로그인 후 복사

      如果您重新运行代码,您的文件将被删除!

      查看此要点:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e

      创建目录

      我们可以使用 mkdir 方法异步创建目录。在文件中编写以下代码:

      fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => {
        if (err) throw err
      
        console.log(&#39;已成功创建文件夹!&#39;)
      })
      로그인 후 복사
      로그인 후 복사

      首先,要在当前工作目录中创建一个新文件夹。如前所述,您可以使用 cwd() 方法从 process 对象获取当前工作目录。

      然后,传递要创建的一个或多个文件夹。但是,这并不意味着您必须在当前工作目录中创建新文件夹。你可以在任何地方创建它们。

      现在,第二个参数是递归选项。如果未将其设置为 true,则无法创建多个文件夹。如果将 recursive 选项设置为 false,上述代码将给出一个错误。试试看!

      但是,如果您只想创建一个文件夹,则无需将 recursive 选项设置为 true

      以下代码可以正常工作!

      fs.mkdir(`${process.cwd()}/myFolder`, err => {
        if (err) throw err
      
        console.log(&#39;已成功创建文件夹!&#39;)
      });
      로그인 후 복사

      因此,我想强调使用 recursive。如果要在文件夹中创建文件夹,则需要将其设置为 true。它将创建所有文件夹,即使它们不存在。

      另一方面,如果您只想创建一个文件夹,可以将其保留为 false

      查看此要点:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066

      删除目录

      删除目录的逻辑类似于创建目录。如果您查看为创建目录而编写的代码和下面的代码,您会发现相似之处。

      因此,在文件中编写以下代码:

      fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => {
        if (err) throw err
      
        console.log(&#39;已成功删除文件夹!&#39;)
      })
      로그인 후 복사

      使用文件系统模块中的 rmdir 方法,并传递以下参数:

      • 要删除的目录
      • 递归属性
      • 回调

      如果将 recursive 属性设置为 true,它将删除文件夹及其内容。请务必注意,如果文件夹中包含内容,则需要将其设置为 true。否则,您将得到一个错误。

      以下代码段仅在文件夹为空时有效:

      fs.rmdir(`${process.cwd()}/myFolder/`, err => {
        if (err) throw err
      
        console.log(&#39;已成功删除文件夹!&#39;)
      })
      로그인 후 복사

      如果 myFolder 中有其他文件和/或文件夹,如果未传递 { recursive: true },则会出现错误。

      知道何时使用 recursive 选项以及何时不避免问题是很重要的。

      查看此要点:https://gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce

      目录/文件重命名

      使用 fs 模块,您可以重命名目录和文件。下面的代码片段显示了如何使用 rename 方法进行此操作。

      // 重命名一个目录fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => {
        if (err) throw err
      
        console.log(&#39;目录重命名!&#39;)
      });// 重命名一个文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => {
        if (err) throw err
      
        console.log(&#39;文件重命名!&#39;)
      });
      로그인 후 복사

      rename 方法包含三个参数:

      • 第一个参数是现有的文件夹/文件
      • 第二个参数是新名称
      • 回调

      因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应更新目录/文件的名称。

      需要注意的是,如果新路径已经存在(例如,文件/文件夹的新名称),它将被覆盖。因此,请确保不要错误地覆盖现有文件/文件夹。

      查看此要点:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e

      向文件中添加内容

      我们还可以使用 appendFile 方法向现有文件添加新内容。

      如果比较 writeFileappendFile 这两种方法,我们可以发现它们是相似的。传递文件路径、内容和回调。

      fs.appendFile(filePath, &#39;\nAll work and no play makes Jack a dull boy!&#39;, err => {
        if (err) throw err
        
        console.log(&#39;All work and no play makes Jack a dull boy!&#39;)
      })
      로그인 후 복사

      上面的代码片段演示了如何向现有文件添加新内容。如果运行应用程序并打开文件,您应该会看到其中的新内容。

      更多node相关知识,请访问:nodejs 教程

      위 내용은 노드의 fs 모듈은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Mar 28, 2023 pm 07:28 PM

파일 업로드를 처리하는 방법은 무엇입니까? 다음 글에서는 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? Mar 05, 2025 pm 05:57 PM

Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Apr 03, 2023 pm 06:02 PM

이 기사에서는 Node의 프로세스 관리 도구인 "pm2"를 공유하고 pm2가 필요한 이유, pm2 설치 및 사용 방법에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다!

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

Angular 및 Node를 사용한 토큰 기반 인증 Angular 및 Node를 사용한 토큰 기반 인증 Sep 01, 2023 pm 02:01 PM

인증은 모든 웹 애플리케이션에서 가장 중요한 부분 중 하나입니다. 이 튜토리얼에서는 토큰 기반 인증 시스템과 기존 로그인 시스템과의 차이점에 대해 설명합니다. 이 튜토리얼이 끝나면 Angular와 Node.js로 작성된 완벽하게 작동하는 데모를 볼 수 있습니다. 기존 인증 시스템 토큰 기반 인증 시스템으로 넘어가기 전에 기존 인증 시스템을 살펴보겠습니다. 사용자는 로그인 양식에 사용자 이름과 비밀번호를 입력하고 로그인을 클릭합니다. 요청한 후 데이터베이스를 쿼리하여 백엔드에서 사용자를 인증합니다. 요청이 유효하면 데이터베이스에서 얻은 사용자 정보를 이용하여 세션을 생성하고, 세션 정보를 응답 헤더에 반환하여 브라우저에 세션 ID를 저장한다. 다음과 같은 애플리케이션에 대한 액세스를 제공합니다.

See all articles