Node.js 파일 시스템
Node.js는 UNIX(POSIX) 표준과 유사한 파일 작업 API 세트를 제공합니다. Node의 가져오기 파일 시스템 모듈(fs)의 구문은 다음과 같습니다.
var fs = require("fs")
비동기 및 동기
Node.js 파일 시스템(fs 모듈) 모듈의 메서드에는 비동기 및 동기 버전이 있습니다. 파일 내용 읽기는 비동기식 fs.readFile() 및 동기식 fs.readFileSync()입니다.
비동기 메소드 함수의 마지막 매개변수는 콜백 함수이고, 콜백 함수의 첫 번째 매개변수에는 오류 정보(error)가 포함되어 있습니다.
동기화 방법에 비해 비동기식 방법은 성능이 더 뛰어나고 속도가 빠르며 차단이 없습니다.
Example
다음 내용으로 input.txt 파일을 생성합니다.
php中文网官网地址:www.php.cn 文件读取实例
다음 코드로 file.js 파일을 생성합니다.
var fs = require("fs"); // 异步读取 fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取: " + data.toString()); }); // 同步读取 var data = fs.readFileSync('input.txt'); console.log("同步读取: " + data.toString()); console.log("程序执行完毕。");
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 同步读取: php中文网官网地址:www.php.cn 文件读取实例 程序执行完毕。 异步读取: php中文网官网地址:www.php.cn 文件读取实例
Next, let Node.js 파일 시스템 메소드를 자세히 살펴보겠습니다.
파일 열기
Syntax
다음은 비동기 모드에서 파일을 여는 구문 형식입니다.
fs.open(path, flags[, mode], callback)
Parameters
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로 .
flags - 파일 열기 동작. 구체적인 값은 아래를 참조하세요.
mode - 파일 모드(권한)를 설정합니다. 파일 생성을 위한 기본 권한은 0666(읽기, 쓰기 가능)입니다.
callback - callback(err, fd)과 같은 두 개의 매개변수가 있는 콜백 함수.
flags 매개변수는 다음 값일 수 있습니다.
Flag | 설명 |
---|---|
r | 파일을 읽기 모드로 엽니다. 파일이 없으면 예외가 발생합니다. |
r+ | 파일을 읽기 및 쓰기 모드로 엽니다. 파일이 없으면 예외가 발생합니다. |
rs | 파일을 동기식으로 읽습니다. |
rs+ | 동기적인 방식으로 파일을 읽고 씁니다. |
w | 파일을 쓰기 모드로 열고 파일이 없으면 생성하세요. |
wx | 'w'와 같지만 파일 경로가 존재하면 파일 쓰기가 실패합니다. |
w+ | 파일을 읽기-쓰기 모드로 열고 파일이 없으면 새로 만듭니다. |
wx+ | 'w+'와 유사하지만 파일 경로가 존재하면 파일 읽기 및 쓰기가 실패합니다. |
a | 파일을 추가 모드로 열고 파일이 없으면 생성하세요. |
ax | 'a'와 유사하지만 파일 경로가 존재하면 파일 추가가 실패합니다. |
a+ | 파일을 읽기-추가 모드로 열고 파일이 없으면 새로 만듭니다. |
ax+ | 은 'a+'와 유사하지만 파일 경로가 존재하면 파일 읽기 및 추가가 실패합니다. |
Example
다음으로 file.js 파일을 생성하고 input.txt 파일을 열어서 읽고 쓸 수 있습니다.
var fs = require("fs"); // 异步打开文件 console.log("准备打开文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备打开文件! 文件打开成功!
파일 가져오기 information
Syntax
다음은 비동기 모드를 통해 파일 정보를 얻기 위한 구문 형식입니다.
fs.stat(path, callback)
매개 변수
매개 변수 사용 지침은 다음과 같습니다.
path - 파일 경로입니다.
callback - (err, stats)와 같은 두 개의 매개변수가 있는 콜백 함수, stats는 fs.Stats 개체입니다.
fs.stat(path)가 실행된 후 stats 클래스의 인스턴스는 콜백 함수로 반환됩니다. 통계 클래스에 제공된 메소드를 통해 파일의 관련 속성을 확인할 수 있습니다. 예를 들어, 파일인지 확인하려면:
var fs = require('fs'); fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) { console.log(stats.isFile()); //true })
stats 클래스의 메서드는 다음과 같습니다.
Method | Description |
---|---|
stats.isFile() | 파일인 경우 true를 반환합니다. , 그렇지 않으면 false를 반환합니다. |
stats.isDirectory() | 디렉토리이면 true를 반환하고 그렇지 않으면 false를 반환합니다. |
stats.isBlockDevice() | 블록 장치인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
stats.isCharacterDevice() | 문자 장치인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
stats.isSymbolicLink() | 소프트 링크인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
stats.isFIFO() | FIFO이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. FIFO는 UNIX의 특수한 유형의 명령 파이프입니다. |
stats.isSocket() | 소켓이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
Example
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); console.log("准备打开文件!"); fs.stat('input.txt', function (err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("读取文件信息成功!"); // 检测文件类型 console.log("是否为文件(isFile) ? " + stats.isFile()); console.log("是否为目录(isDirectory) ? " + stats.isDirectory()); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备打开文件! { dev: 16777220, mode: 33188, nlink: 1, uid: 501, gid: 20, rdev: 0, blksize: 4096, ino: 40333161, size: 61, blocks: 8, atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST), mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST), ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) } 读取文件信息成功! 是否为文件(isFile) ? true 是否为目录(isDirectory) ? false
Write file
Syntax
다음은 구문 형식입니다. 비동기 모드에서 파일 쓰기:
fs.writeFile(filename, data[, options], callback)
파일이 존재하는 경우 이 방법으로 작성된 내용이 이전 파일 내용을 덮어씁니다.
Parameters
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로.
data - 파일에 기록할 데이터로, 문자열(문자열) 또는 버퍼(스트림) 개체일 수 있습니다.
options - 이 매개변수는 {인코딩, 모드, 플래그}를 포함하는 개체입니다. 기본 인코딩은 utf8, 모드는 0666, 플래그는 'w'
callback - 콜백 함수에는 오류 정보 매개변수(err)만 포함되며 쓰기 실패 시 반환됩니다.
Example
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); console.log("准备写入文件"); fs.writeFile('input.txt', '我是通过写入的文件内容!', function(err) { if (err) { return console.error(err); } console.log("数据写入成功!"); console.log("--------我是分割线-------------") console.log("读取写入的数据!"); fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取文件数据: " + data.toString()); }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备写入文件 数据写入成功! --------我是分割线------------- 读取写入的数据! 异步读取文件数据: 我是通过写入的文件内容
파일 읽기
Syntax
다음 비동기 모드에서 파일을 읽고 있습니다. 구문 형식:
fs.read(fd, buffer, offset, length, position, callback)
이 방법은 파일 설명자를 사용하여 파일을 읽습니다.
Parameters
매개변수 사용 지침은 다음과 같습니다.
fd - fs.open() 메서드에서 반환된 파일 설명자입니다.
buffer - 데이터가 기록되는 버퍼입니다.
offset - 버퍼 쓰기에 대한 쓰기 오프셋입니다.
length - 파일에서 읽을 바이트 수입니다.
position - 파일 읽기 시작 위치입니다. position 값이 null이면 현재 파일 포인터 위치부터 읽습니다.
callback - 콜백 함수에는 err, bytesRead 및 buffer의 세 가지 매개변수가 있습니다. err은 오류 메시지이고, bytesRead는 읽은 바이트 수를 나타내며, buffer는 버퍼 객체입니다.
Example
input.txt 파일 내용은 다음과 같습니다.
php中文网官网地址:www.php.cn
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); var buf = new Buffer(1024); console.log("准备打开已存在的文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); console.log("准备读取文件:"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){ if (err){ console.log(err); } console.log(bytes + " 字节被读取"); // 仅输出读取的字节 if(bytes > 0){ console.log(buf.slice(0, bytes).toString()); } }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备打开已存在的文件! 文件打开成功! 准备读取文件: 42 字节被读取 php中文网官网地址:www.php.cn
파일 닫기
Syntax
다음은 비동기 모드에서 파일을 닫는 구문 형식입니다.
fs.close(fd, callback)
이 방법은 파일 설명자를 사용하여 파일을 읽습니다.
Parameters
매개변수 사용 지침은 다음과 같습니다.
fd - fs.open() 메서드에서 반환된 파일 설명자입니다.
callback - 콜백 함수, 매개변수 없음.
Example
input.txt 파일 내용은 다음과 같습니다.
php中文网官网地址:www.php.cn
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); var buf = new Buffer(1024); console.log("准备打开文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); console.log("准备读取文件!"); 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()); } // 关闭文件 fs.close(fd, function(err){ if (err){ console.log(err); } console.log("文件关闭成功"); }); }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备打开文件! 文件打开成功! 准备读取文件! php中文网官网地址:www.php.cn 文件关闭成功
Intercept the file
Syntax
다음은 비동기 모드에서 파일을 가로채기 위한 구문 형식입니다.
fs.ftruncate(fd, len, callback)
이 방법은 파일 설명자를 사용하여 파일을 읽습니다.
Parameters
매개변수 사용 지침은 다음과 같습니다.
fd - fs.open() 메서드에서 반환된 파일 설명자입니다.
len - 파일 콘텐츠를 가로채는 길이입니다.
callback - 콜백 함수, 매개변수 없음.
Example
input.txt 파일 내용은 다음과 같습니다.
site:www.php.cn
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); var buf = new Buffer(1024); console.log("准备打开文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); console.log("截取10字节后的文件内容。"); // 截取文件 fs.ftruncate(fd, 10, function(err){ if (err){ console.log(err); } console.log("文件截取成功。"); console.log("读取相同的文件"); 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()); } // 关闭文件 fs.close(fd, function(err){ if (err){ console.log(err); } console.log("文件关闭成功!"); }); }); }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备打开文件! 文件打开成功! 截取10字节后的文件内容。 文件截取成功。 读取相同的文件 site:www.r 文件关闭成功
파일 삭제
Syntax
파일 삭제 구문 형식은 다음과 같습니다.
fs.unlink(path, callback)
매개변수
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로.
callback - 콜백 함수, 매개변수 없음.
Example
input.txt 파일 내용은 다음과 같습니다.
site:www.php.cn
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); console.log("准备删除文件!"); fs.unlink('input.txt', function(err) { if (err) { return console.error(err); } console.log("文件删除成功!"); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备删除文件! 文件删除成功!
Let's input.txt 파일을 다시 확인해 보니 더 이상 존재하지 않는 것으로 나타났습니다.
디렉터리 생성
구문
다음은 디렉터리 생성을 위한 구문 형식입니다.
fs.mkdir(path[, mode], callback)
매개변수
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로.
mode - 디렉터리 권한을 설정합니다. 기본값은 0777입니다.
callback - 콜백 함수, 매개변수 없음.
예제
다음으로 file.js 파일을 생성합니다. 코드는 다음과 같습니다.
var fs = require("fs"); console.log("创建目录 /tmp/test/"); fs.mkdir("/tmp/test/",function(err){ if (err) { return console.error(err); } console.log("目录创建成功。"); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 创建目录 /tmp/test/ 目录创建成功。
디렉토리 읽기
Syntax
다음 디렉토리를 읽기 위한 구문 형식입니다.
fs.readdir(path, callback)
매개변수
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로.
callback - 콜백 함수는 err, files 두 개의 매개변수를 사용합니다. err은 오류 메시지이고 files는 디렉터리의 파일 배열 목록입니다.
Example
다음으로 file.js 파일을 생성하는데 코드는 다음과 같습니다.
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 ); }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 查看 /tmp 目录 input.out output.out test test.txt
디렉토리 삭제
Syntax
다음은 다음과 같습니다. 디렉토리 삭제 구문 형식:
fs.rmdir(path, callback)
parameter
매개변수 사용 지침은 다음과 같습니다.
path - 파일 경로.
callback - 콜백 함수, 매개변수 없음.
예제
다음으로 file.js 파일을 생성하는데, 코드는 다음과 같습니다.
var fs = require("fs"); console.log("准备删除目录 /tmp/test"); fs.rmdir("/tmp/test",function(err){ if (err) { return console.error(err); } console.log("读取 /tmp 目录"); fs.readdir("/tmp/",function(err, files){ if (err) { return console.error(err); } files.forEach( function (file){ console.log( file ); }); }); });
위 코드의 실행 결과는 다음과 같습니다.
$ node file.js 准备删除目录 /tmp/test input.out output.out test test.txt 读取 /tmp 目录 ……
파일 모듈 메소드 참조 매뉴얼
다음은 Node.js 파일 모듈과 동일합니다. 메소드 목록:
일련번호 | 방법 및 설명 |
---|---|
1 | fs.rename(oldPath, newPath, callback) 비동기 이름 바꾸기()에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
2 | fs.ftruncate(fd, len, callback) 비동기 ftruncate()에는 매개변수가 없지만 예외가 발생할 수 있습니다. 매개변수는 없지만 예외가 발생할 수 있습니다. |
5 | fs.truncateSync(경로, len) 동기 자르기() |
6 | fs.chown(경로, uid, gid, 콜백) 비동기 chown().callback 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
7 | fs.chownSync(path, uid, gid) synchronous chown() |
8 | fs.fchown(fd, uid, gid, callback) asynchronous fchown() .콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
9 | fs.fchownSync(fd, uid, gid) synchronous fchown() |
10 | fs.lchown(path, uid, gid, callback) asynchronous lchown( ) .콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
11 | fs.lchownSync(경로, uid, gid) 동기 lchown() |
12 | fs.chmod(경로, 모드, 콜백) 비동기 chmod().callback 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
13 | fs.chmodSync(경로, 모드) 동기 chmod(). |
14 | fs.fchmod(fd, 모드, 콜백) 비동기 fchmod().콜백 함수 매개변수를 사용하지 않지만 예외가 발생할 수 있습니다. |
15 | fs.fchmodSync(fd, 모드) 동기 fchmod(). |
16 | fs.lchmod(경로, 모드, 콜백) 비동기 lchmod().콜백 함수 매개변수를 사용하지 않지만 예외가 발생할 수 있습니다. Mac OS X에서만 사용할 수 있습니다. |
17 | fs.lchmodSync(경로, 모드)()에는 err, stats라는 두 개의 매개변수가 있으며 stats는 fs.Stats 개체입니다. |
fs.lstat(path, callback) | asynchronous lstat()에는 err, stats라는 두 개의 매개변수가 있으며 stats는 fs.Stats 개체입니다. |
fs.fstat(fd, callback) | Asynchronous fstat()에는 err, stats라는 두 개의 매개변수가 있으며 stats는 fs.Stats 개체입니다. |
fs.statSync(path) | Synchronize stat(). |
fs.lstatSync(path) | lstat()을 동기화합니다. fs.Stats의 인스턴스를 반환합니다. |
fs.fstatSync(fd) | 동기식 fstat(). fs.Stats의 인스턴스를 반환합니다. |
24 | fs.link(srcpath, dstpath, callback) Asynchronous link() 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
25s.fs.linksync (srcpath, dstpath) | synchronous link (). | 26
fs.symlink (srcpath, dstpath [, type], 콜백) | asynchronous symlink ( ) 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. 유형 매개변수는 'dir', 'file' 또는 'junction'(기본값은 'file')으로 설정할 수 있습니다. | 27
fs.symlinkSync(srcpath, dstpath[, type]) | 동기성 심볼릭 링크(). | 28
fs.readlink(경로, 콜백) | 비동기 읽기 링크(). 콜백 함수에는 err 및 linkString이라는 두 개의 매개변수가 있습니다. | 29
fs.realpath(path[,cache], callback) | asynchronous realpath()에는 err라는 두 개의 매개변수가 있습니다. | 30
fs.realpathSync(경로[, 캐시]) | realpath()를 동기화합니다. 절대 경로를 반환합니다. | 31
fs.unlink(path, callback) | Asynchronous unlink() 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. | 34
fs.rmdirSync(경로) | 동기 rmdir(). | 35
fs.mkdir(경로[, 모드], 콜백) | S 비동기 mkdir(2). 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. 모드 기본값은 0777입니다. | 36
fs.mkdirSync(path[, mode]) | synchronous mkdir(). | 37
fs.readdir(path, callback) | asynchronous readdir (3) 디렉토리의 내용을 읽습니다. | 38
fs.readdirSync(path) | 동기식 readdir()을 반환합니다. | 39
fs.close(fd, callback) | Asynchronous close() 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. | 40
fs.closeSync(fd) | 동기화 close(). | 41
fs.open(path, flags[, mode], callback) | 파일을 비동기적으로 엽니다. | 42
fs.openSync(경로, 플래그[, 모드]) | fs.open()의 동기화 버전. | 43
fs.utimes(경로, atime, mtime, 콜백 ) | |
fs.utimesSync(path, atime, mtime) | 파일 타임스탬프를 수정하면 파일이 지정된 파일 경로를 전달합니다. | 45
fs.futimes(fd, atime, mtime, 콜백) | | 46
fs.futimesSync(fd, atime, mtime) | 파일 설명자로 지정된 파일 타임스탬프를 수정합니다. |
47 | fs.fsync(fd, callback) Asynchronous fsync 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
48 | fs.fsyncSync(fd) Sync fsync. |
49 | fs.write(fd, buffer, offset, length[, position], callback) 은 내용을 버퍼링합니다. 파일 설명자가 지정한 파일에 기록됩니다. |
50 | fs.write(fd, data[, position[, 인코딩]], callback) 파일 설명자 fd를 통해 파일 내용을 씁니다. |
51 | fs.writeSync(fd, buffer, offset, length[, position]) fs.write()의 동기화된 버전입니다. |
52 | fs.writeSync(fd, data[, position[, 인코딩]]) fs.write()의 동기화된 버전. |
53 | fs.read(fd, buffer , 오프셋, 길이, 위치, 콜백) 파일 설명자 fd를 통해 파일 내용을 읽습니다. |
54 | fs.readSync(fd, buffer, offset, length, position) fs.read. |
55 | fs.readFile(filename[, options], callback ) 파일 콘텐츠를 비동기적으로 읽습니다. |
56 | fs.readFileSync(filename[, options])<br fs.readfile.<="" td=""> |
57 | fs의 동기화된 버전 .writeFile(filename, data[, options], callback) 파일 내용을 비동기적으로 씁니다. |
58 | fs.writeFileSync(filename, data[, options]) fs.writeFile의 동기화된 버전입니다. |
59 | fs.appendFile(filename, data[, options], callback) 파일 콘텐츠를 비동기적으로 추가합니다. |
60 | fs.appendFileSync(파일 이름, 데이터[, 옵션]) fs.appendFile. |
61 | fs.watchFile(파일 이름[, 옵션], 리스너)의 동기화 버전 파일 수정 사항을 확인하세요. |
62 | fs.unwatchFile(filename[,listener]) 파일 이름 수정 보기를 중지하세요. |
63 | fs.watch(filename[, options][,listener]) 파일 이름 수정 보기, 파일 이름은 파일 또는 디렉터리일 수 있습니다. fs.FSWatcher 객체를 반환합니다. |
64 | fs.exists(path, callback) 주어진 경로가 존재하는지 확인하세요. |
65 | fs.existsSync(path) fs.exists. |
66 | fs.access(path[, mode], callback) 에 대한 사용자 권한 테스트 지정된 경로 . |
67 | fs.accessSync(path[, mode]) fs.access의 동기화된 버전입니다. |
68 | fs.createReadStream(path[, options]) ReadStream 개체를 반환합니다. |
69 | fs.createWriteStream(경로[, 옵션]) WriteStream 객체를 반환합니다. |
70 | fs.symlink(srcpath, dstpath[, type], callback) 콜백 함수에는 매개변수가 없지만 예외가 발생할 수 있습니다. |
자세한 내용은 공식 웹사이트 파일 모듈 설명(파일 시스템)을 확인하세요.