노드의 fs 모듈은 무엇입니까
노드에서 fs 모듈은 파일을 동작시키는데 사용되는 모듈인 "파일 시스템 모듈"을 말합니다. fs 모듈의 대부분 API는 세 가지 작동 방법을 제공합니다. 1. 동기 파일 작업: 코드가 차단되고 계속 실행되지 않습니다. 2. 비동기 콜백 함수 작업 파일: 코드가 차단되지 않으며 콜백 함수가 필요합니다. 결과를 얻으면 콜백 함수가 실행됩니다. 3. 비동기 Promise 작업 파일: 코드가 차단되지 않으며 fs.promises를 통해 메서드 작업을 호출하여 Promise가 반환됩니다.
이 튜토리얼의 운영 환경: 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
方法至少接受以下参数:
- 文件名
- 内容
- 回调
如果指定的文件已经存在,它会将旧内容替换为您作为参数提供的内容。如果指定的文件不存在,则创建一个新文件。
导入 fs
和 path
模块后,在文件中编写以下代码:
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🎜🎜🎜지정된 파일이 이미 존재하는 경우 이전 콘텐츠를 원하는 콘텐츠로 대체합니다. 매개변수 콘텐츠로 제공합니다. 지정한 파일이 없으면 새 파일이 생성됩니다. 🎜🎜
- 文件的路径
- 回调
fs.readFileSync
— 同步写入文件fsPromises.readFile
— 使用基于 Promise 的 API 写入文件- 要删除的目录
- 递归属性
- 回调
- 第一个参数是现有的文件夹/文件
- 第二个参数是新名称
- 回调
fs
및 path
모듈을 가져온 후 파일에 다음 코드를 작성합니다. 🎜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('文件已删除!')
})
로그인 후 복사로그인 후 복사🎜첫 번째 매개변수 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) => {
if (err) throw err
console.log(&#39;已成功创建文件夹!&#39;)
})</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜 <code>readFile
메소드는 최소 두 개의 매개변수를 허용합니다: 🎜
fs.unlink(filePath, error => { if (error) throw error console.log('文件已删除!') })
如果有错误,它会抛出一个错误。否则,它会在终端中输出文件内容。
readFile
还有其他变体,例如:
查看此要点: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('文件已删除!') })
如果您重新运行代码,您的文件将被删除!
查看此要点:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e
创建目录
我们可以使用 mkdir
方法异步创建目录。在文件中编写以下代码:
fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => { if (err) throw err console.log('已成功创建文件夹!') })
首先,要在当前工作目录中创建一个新文件夹。如前所述,您可以使用 cwd()
方法从 process
对象获取当前工作目录。
然后,传递要创建的一个或多个文件夹。但是,这并不意味着您必须在当前工作目录中创建新文件夹。你可以在任何地方创建它们。
现在,第二个参数是递归选项。如果未将其设置为 true
,则无法创建多个文件夹。如果将 recursive
选项设置为 false
,上述代码将给出一个错误。试试看!
但是,如果您只想创建一个文件夹,则无需将 recursive
选项设置为 true
。
以下代码可以正常工作!
fs.mkdir(`${process.cwd()}/myFolder`, err => { if (err) throw err console.log('已成功创建文件夹!') });
因此,我想强调使用 recursive
。如果要在文件夹中创建文件夹,则需要将其设置为 true
。它将创建所有文件夹,即使它们不存在。
另一方面,如果您只想创建一个文件夹,可以将其保留为 false
。
查看此要点:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066
删除目录
删除目录的逻辑类似于创建目录。如果您查看为创建目录而编写的代码和下面的代码,您会发现相似之处。
因此,在文件中编写以下代码:
fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => { if (err) throw err console.log('已成功删除文件夹!') })
使用文件系统模块中的 rmdir
方法,并传递以下参数:
如果将 recursive
属性设置为 true
,它将删除文件夹及其内容。请务必注意,如果文件夹中包含内容,则需要将其设置为 true
。否则,您将得到一个错误。
以下代码段仅在文件夹为空时有效:
fs.rmdir(`${process.cwd()}/myFolder/`, err => { if (err) throw err console.log('已成功删除文件夹!') })
如果 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('目录重命名!') });// 重命名一个文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => { if (err) throw err console.log('文件重命名!') });
rename
方法包含三个参数:
因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应更新目录/文件的名称。
需要注意的是,如果新路径已经存在(例如,文件/文件夹的新名称),它将被覆盖。因此,请确保不要错误地覆盖现有文件/文件夹。
查看此要点:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e
向文件中添加内容
我们还可以使用 appendFile
方法向现有文件添加新内容。
如果比较 writeFile
和 appendFile
这两种方法,我们可以发现它们是相似的。传递文件路径、内容和回调。
fs.appendFile(filePath, '\nAll work and no play makes Jack a dull boy!', err => { if (err) throw err console.log('All work and no play makes Jack a dull boy!') })
上面的代码片段演示了如何向现有文件添加新内容。如果运行应用程序并打开文件,您应该会看到其中的新内容。
更多node相关知识,请访问:nodejs 教程!
위 내용은 노드의 fs 모듈은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

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

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

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

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

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

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

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