>  기사  >  웹 프론트엔드  >  nodejs 프로젝트에서 파일을 추가, 삭제, 수정, 확인하는 방법을 빠르게 이해하세요.

nodejs 프로젝트에서 파일을 추가, 삭제, 수정, 확인하는 방법을 빠르게 이해하세요.

青灯夜游
青灯夜游앞으로
2021-09-01 18:22:031479검색

nodejs 프로젝트에서 파일을 추가, 삭제, 수정, 확인하는 방법을 빠르게 이해하세요.

이 글은 주로 node.js를 처음 접하는 학생들을 위해 작성되었습니다. 이 글은 주로 nodejs의 파일 모듈을 통해 우리 운영체제에서 파일을 생성하고, 읽고, 수정하고, 삭제할 수 있다는 것을 소개합니다. . 파일이나 폴더도 동일한 방식으로 Linux 서버에서 실행할 수 있습니다. nodejs는 크로스 플랫폼 JavaScript 실행 환경이기 때문입니다. [추천 학습: "nodejs Tutorial"]

Nodejs 파일 시스템 공식 문서: https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

소스 코드: https:/ / github.com/cmdfas/nodejs-file-system

프로젝트 구조:

├── files
│   ├── file1
│   └── file2
├── dir.js
├── index-callback.js
├── index-promise.js
└── stream.js

일반 파일 작업

콜백 기능 작업

index-callback.js을 생성합니다. 코드는 다음과 같습니다index-callback.js,代码如下

const fs = require('fs')
const path = require('path')

// 读取文件
fs.readFile(path.join(__dirname, 'files', 'file1'), (err, buf) => {
    if (err) throw err
    console.log(buf.toString()) 
})

// 写入文件
fs.writeFile(path.join(__dirname, 'files', 'file3'), '欢迎光临', (err) => {
    if (err) throw err
    console.log('写入完成') 

  	// 在文件末尾追加
    fs.appendFile(path.join(__dirname, 'files', 'file3'), '\n\n男宾三位', (err) => {
        if (err) throw err
        console.log('追加完成') 

      	// 修改文件名称
        fs.rename(path.join(__dirname, 'files', 'file3'), path.join(__dirname, 'files', 'file3-rename'), (err) => {
            if (err) throw err
            console.log('改名完成') 
    
        })
    })
})

总结:

  • readFile用来读取文件的内容,在读取成功后在回调函数返回的是buffer格式,所以需要调用toString()方法
  • writeFile写入内容进文件,如果文件不存在会自动创建文件
  • appendFile在文件末尾追加内容,如果文件不存在会自动创建文件
  • rename可以用来修改文件名称
  • path.join用来拼接文件路径,可以避免不同操作系统路径格式不同的问题
  • __dirname是node.js全局变量,默认是当前项目目录

promise async await式操作

创建index-promise.js,代码如下

const fsPromises = require('fs').promises
const path = require('path')

const fileFunc = async () => {
    try {
        const data = await fsPromises.readFile(path.join(__dirname, 'files', 'file1'))
        console.log(data.toString())
        await fsPromises.unlink(path.join(__dirname, 'files', 'file1'))
      
        await fsPromises.writeFile(path.join(__dirname, 'files', 'file5'), data)
        await fsPromises.appendFile(path.join(__dirname, 'files', 'file5'), '\n\n欢迎光临')
        await fsPromises.rename(path.join(__dirname, 'files', 'file5'), path.join(__dirname, 'files', 'file5-rename'))
        const newData = await fsPromises.readFile(path.join(__dirname, 'files', 'file5-rename'))
        console.log(newData.toString())
    } catch (error) {
        console.log(error)
    }
}

fileFunc()

总结:

  • 相比回调式操作,使用async await操作会更加优雅,不会出现回调地狱
  • unlink用来删除文件

文件流操作

创建stream.js,代码如下

方式一

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

// 监听读取并写入
rs.on('data', (chunk) => {
	ws.write(chunk)
})

在读取大文件时或者处理网络文件时,文件流操作很有用,在操作大文件时,我们可以设置每次读取的数据量大小,默认是64kb

方式二

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

rs.pipe(ws)

pipe方法自动将读取文件流导入到写入流,相当于一个便捷操作。

操作文件夹

创建dir.js,代码如下

const fs = require('fs')

// 判断文件夹是否存在
if (!fs.existsSync('./new')) {
  	// 创建文件夹
    fs.mkdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹创建成功')
    })
}

if (fs.existsSync('./new')) {
  	// 删除文件夹
    fs.rmdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹删除成功')
    })
}

总结:

  • existsSync是同步方法,用来判断文件夹是否存在
  • mkdir创建文件夹
  • rmdir rrreee
  • 요약 :
  • readFile은 파일 내용을 읽는 데 사용됩니다. 읽기에 성공한 후 콜백 함수는 버퍼 형식을 반환하므로 toString() 메서드가 필요합니다. 호출됩니다

  • writeFile파일에 내용을 씁니다. 파일이 없으면 자동으로 파일이 생성됩니다.
  • appendFile다음 위치에 내용을 추가합니다. 파일이 없으면 자동으로 파일이 생성됩니다

  • rename을 사용하여 파일 이름을 수정할 수 있습니다
  • path.join code>는 파일 경로를 연결하는 데 사용되며, 이를 통해 다양한 운영 체제에서 다양한 경로 형식으로 인한 문제를 피할 수 있습니다
  • __dirname은 node.js 전역 변수이며 기본값은 현재 프로젝트 디렉터리입니다 🎜

    promise async wait Operation🎜🎜 index-promise.js 생성, 코드는 다음과 같습니다 🎜rrreee🎜 요약: 🎜<ul> <li> 콜백 작업에 비해 비동기 대기 작업을 사용하는 것이 더 우아하고 콜백 지옥을 일으키지 않습니다🎜</li> <li>파일을 삭제하려면 <code>unlink를 사용하세요🎜🎜

    파일 스트림 작업🎜🎜stream.js를 생성하면 코드는 다음과 같습니다🎜

    1🎜rrreee🎜파일 스트림 작업은 대용량 파일을 읽거나 처리할 때 매우 유용합니다. 대용량 파일을 작업할 때 매번 읽는 데이터의 양을 설정할 수 있습니다. 기본값은 64kb🎜

    방법 2🎜rrreee🎜pipe 방법입니다. 읽기 파일 스트림을 쓰기 스트림으로 자동으로 가져옵니다. 이는 편리한 작업과 동일합니다. 🎜

    작업 폴더 🎜🎜dir.js 생성, 코드는 다음과 같습니다🎜rrreee🎜요약: 🎜
    • existsSync code>는 폴더가 존재하는지 확인하는 데 사용되는 동기화 방법입니다🎜
    • mkdir폴더 만들기🎜
    • rmdir폴더 삭제🎜🎜 🎜이 3가지 작업 폴더 방식은 매일 먹는 것처럼 매우 일반적입니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 소개🎜를 방문하세요! ! 🎜

위 내용은 nodejs 프로젝트에서 파일을 추가, 삭제, 수정, 확인하는 방법을 빠르게 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제