>웹 프론트엔드 >JS 튜토리얼 >nodeJ의 파일 시스템 및 스트림에 대한 자세한 해석

nodeJ의 파일 시스템 및 스트림에 대한 자세한 해석

亚连
亚连원래의
2018-06-09 16:30:402105검색

이 글은 주로 nodeJs 파일 시스템(fs)과 스트림(stream)에 대한 자세한 설명을 소개하고 있으니 참고하시기 바랍니다.

1. 소개

이 글에서는 node.js 파일 시스템(fs)과 스트림(stream)의 일부 API와 매개변수 사용법을 소개합니다.

2. 디렉터리

파일 시스템에는 다음 메서드가 도입됩니다.

1.fs.readFile

2.fs.writeFile

3.fs.open

4.fs.read

5. fs.stat

6.fs.close

7.fs.mkdir

8.fs.rmdir

9.fs.readdir

10.fs.unlink

4가지 유형의 스트림 스트림: 읽기 가능, 쓰기 가능, 이중, 변환 및 스트림 개체 이벤트.

3. 파일 시스템의 주요 메소드 소개 fs

1.fs.readFile

readFile 메소드는 주로 파일 내용을 읽고 비동기적으로 작동합니다.

var fs = require('fs')
fs.readFile('a.txt',function(err,data){
  if (err){
    return console.error(err);
  }else{
    console.log("异步读取: " + data.toString());
  }
})

2.fs.writeFile

writeFile은 비동기 모드로 파일을 씁니다. fs.writeFile(file, data[, options], callback)

var fs = require('fs')
console.log("准备写入文件")
fs.writeFile('input.txt',"写入的内容",function(err){
  if (err){
    return console.error(err);
  }else{
    console.log("写入成功");
  }
})

3.fs.open()

비동기 모드로 열립니다. 파일, fs .open(path, flags[, mode], callback)

var fs = require("fs");
// 异步打开文件
console.log("准备打开文件");
fs.open('a.txt', 'r+', function(err, fd) {//r+是以读写模式打开,fd为返回的文件描述符
  if (err) {
    return console.error(err);
  }
 console.log("文件打开成功!");   
});

4, fs.read()

이 메서드는 파일을 비동기 모드로 읽습니다. 형식은 fs.read(fd, buffer, offset, length, position, callback)

var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开文件!");
fs.open('at.txt', 'r+', function(err, fd) {
  if (err) {
    return console.error(err);
  }
  fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
   if (err){
     console.log(err);
   }
   // 仅输出读取的字节
   if(bytes > 0){
     console.log(buf.slice(0, bytes).toString());
   }
  });
});

5.fs.stat()

이 메서드는 파일 정보를 비동기식으로 가져옵니다. 형식은 다음과 같습니다. fs.stat(path, callback)

fs.stat('fs.js', function (err, stats) {
  console.log(stats.isFile());     //true
})

stats 클래스의 비동기 반환 인스턴스에 대한 메서드가 많이 있습니다. 예를 들면 다음과 같습니다. stats.isFile()은 파일인지 판단하고, stats.isDirectory()는 디렉토리인지 판단합니다. . . . . .

6. fs.close()

fs.close()는 파일을 비동기적으로 닫습니다: fs.close(fd, callback) 매개변수는 다음과 같습니다:

d - fs.open을 통해. () 메소드 반환된 파일 설명자입니다.

callback - 콜백 함수, 매개변수 없음.

7.fs.mkdir()

이 방법은 디렉토리를 생성하는 것입니다. 형식은 다음과 같습니다: fs.mkdir(path[, mode], callback)

path: path.

모드: 디렉터리 권한, 기본값은 0777입니다.

콜백: 콜백, 매개변수 없음.

var fs = require("fs");
console.log("创建目录/test/");
fs.mkdir("/test/",function(err){
  if (err) {
    return console.error(err);
  }
  console.log("创建/test目录成功。");
});

8.fs.rmdir()

디렉토리 삭제, 구문 형식: fs.rmdir(path, callback)

9. fs.readdir()

이 방법은 디렉터리를 읽는 것입니다. 구문 형식: fs .readdir(경로, 콜백), 콜백 함수에는 두 개의 매개변수가 있습니다. 첫 번째는 err이고 두 번째는 디렉터리의 파일 배열 파일입니다.

var fs = require("fs");

console.log("查看 /tmp 目录");
fs.readdir("/tmp/",function(err, files){
  if (err) {
    return console.error(err);
  }
  files.forEach( function (file){
    console.log( file );
  });
});

10.fs.unlink()

이 메서드는 파일을 삭제하는 데 사용됩니다. 형식은 다음과 같습니다. fs.unlink(path, callback)

var fs = require("fs");

console.log("准备删除文件!");
fs.unlink('input.txt', function(err) {
  if (err) {
    return console.error(err);
  }
  console.log("文件删除成功!");
});

4. 스트림 유형 및 이벤트 소개

1. : 스트림은 네 가지 스트림 유형이 있는 추상 인터페이스입니다:

  1. 읽기 가능: 쓰기 가능 작업;

  2. duplex: 읽기 가능 및 쓰기 가능 작업: 데이터를 읽고 결과를 읽습니다.

  3. 모든 스트림 객체는 EventEmitter의 인스턴스입니다. 일반적인 이벤트는 다음과 같습니다.

  4. data: 데이터를 읽을 수 있을 때 트리거됨,

end: 읽을 수 있는 데이터가 없을 때 트리거됨,

  1. error 발생 오류가 발생합니다.

  2. finish: 완료되면 트리거됩니다.

  3. 2. 스트림에서 데이터 읽기

    var fs = require("fs");
    var data = '';
    
    // 创建可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 设置编码为 utf8。
    readerStream.setEncoding('UTF8');
    
    // 处理流事件 --> data, end, and error
    readerStream.on('data', function(chunk) {
      data += chunk;
    });
    
    readerStream.on('end',function(){
      console.log(data);
    });
    
    readerStream.on('error', function(err){
      console.log(err.stack);
    });
    
    console.log("程序执行完毕");
  4. 3. 스트림 쓰기:
  5. var fs = require("fs");
    var data = '写入流数据';
    
    // 创建一个可以写入的流,写入到文件 output.txt 中
    var writerStream = fs.createWriteStream('output.txt');
    
    // 使用 utf8 编码写入数据
    writerStream.write(data,'UTF8');
    
    // 标记文件末尾
    writerStream.end();
    
    // 处理流事件 --> data, end, and error
    writerStream.on('finish', function() {
      console.log("写入完成。");
    });
    
    writerStream.on('error', function(err){
      console.log(err.stack);
    });
    
    console.log("程序执行完毕");

    4. 파이프 스트림(pipe)

    var fs = require("fs");
    
    // 创建一个可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 创建一个可写流
    var writerStream = fs.createWriteStream('output.txt');
    
    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readerStream.pipe(writerStream);
    console.log("程序执行完毕");
  6. 5. 체인 스트림은 출력 스트림을 다른 스트림에 연결하여 생성합니다. 다중 스트림 작업 체인을 위한 메커니즘입니다. 연결된 흐름은 일반적으로 파이프라인 작업에 사용됩니다.

다음으로 파이프와 체인을 사용하여 파일을 압축하고 압축을 풀겠습니다.

//压缩
var fs = require("fs");
var zlib = require('zlib');

// 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
 .pipe(zlib.createGzip())
 .pipe(fs.createWriteStream('input.txt.gz'));
console.log("文件压缩完成。");

//解压
var fs = require("fs");
var zlib = require('zlib');
// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream('input.txt.gz')
 .pipe(zlib.createGunzip())
 .pipe(fs.createWriteStream('input.txt'));
console.log("文件解压完成。");

위 내용은 모두를 위해 제가 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

jquery+css3을 사용하여 panda tv 탐색을 구현하는 방법

jQuery에서 시간 초과 숨기기 대화 상자를 구현하는 방법

JS/jQuery에서 DIV 지연을 구현하여 a 이후에 사라지거나 표시되도록 하는 방법 몇 초

기본 js를 사용하여 지방과 자치단체 간 3단계 연결을 구현합니다.

vue 기본을 사용하여 추가, 삭제, 수정 및 확인을 생성합니다.

JS 작업 클립보드에 대한 자세한 답변

vue -라우터 프로젝트 실제 전투(자세한 튜토리얼)

위 내용은 nodeJ의 파일 시스템 및 스트림에 대한 자세한 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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