يكشف Elide node:fs وnode:fs/promises وfs.promises والاسم
البديل elide:fs. وتغطي الأمثلة أدناه العمليات المتزامنة وعمليات Promise وFileHandle
والتدفقات.
الاستخدام الأساسي
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "elide-fs-"));
const file = path.join(dir, "hello.txt");
try {
fs.writeFileSync(file, "hello\n");
console.log(fs.readFileSync(file, "utf8"));
console.log(fs.statSync(file).isFile());
} finally {
fs.rmSync(dir, { recursive: true, force: true });
}يتحقق هذا المثال من mkdtempSync وwriteFileSync وreadFileSync وstatSync
وrmSync. وقد تحمل حالات فشل نظام الملفات الحقول code وerrno وsyscall وpath
وdest.
الوعود ومقابض الملفات
import os from "node:os";
import path from "node:path";
import { mkdtemp, open, rm, writeFile } from "node:fs/promises";
const dir = await mkdtemp(path.join(os.tmpdir(), "elide-fs-"));
try {
const file = path.join(dir, "data.txt");
await writeFile(file, "hello\n");
const handle = await open(file, "r");
try {
const buffer = Buffer.alloc(64);
const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
console.log(buffer.subarray(0, bytesRead).toString());
} finally {
await handle.close();
}
} finally {
await rm(dir, { recursive: true, force: true });
}يتحقق هذا المثال من mkdtemp وwriteFile وopen وrm القائمة على Promise،
إضافةً إلى FileHandle.read() وFileHandle.close(). وتكشف حالات فشل Promise
النموذجية حقول Node نفسها الموصوفة أعلاه.
يقبل writeFile (وFileHandle.writeFile) أيضًا كائنًا قابلًا للتكرار متزامنًا أو غير متزامن
من السلاسل النصية والمخازن المؤقتة، بما في ذلك تدفق Readable:
import { writeFile } from "node:fs/promises";
import { Readable } from "node:stream";
await writeFile("out.txt", Readable.from(["a", "b", "c"]));التدفقات
يعيد createReadStream وcreateWriteStream تدفقَي Readable وWritable.
وينسخ المثال الموثَّق التالي ملفًا مؤقتًا:
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { pipeline } from "node:stream/promises";
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "elide-fs-"));
try {
const input = path.join(dir, "input.log");
const output = path.join(dir, "copy.log");
fs.writeFileSync(input, "first\nsecond\n");
await pipeline(fs.createReadStream(input), fs.createWriteStream(output));
console.log(fs.readFileSync(output, "utf8"));
} finally {
fs.rmSync(dir, { recursive: true, force: true });
}المراقبة
watch وwatchFile وunwatchFile وواجهة المراقبة القائمة على Promise موجودة.
ويُبقي المراقِب المفتوح السكربت حيًّا إلى أن يُغلق:
import fs from "node:fs";
const watcher = fs.watch(".", (event, name) => {
console.log(event, name); // rename new.txt
watcher.close();
});
setTimeout(() => fs.writeFileSync("new.txt", "hello"), 100);fs.openAsBlob غير متاح.
العزل
الوصول إلى نظام الملفات غير مقيّد إلى أن تُقدَّم خيارات العزل:
--sandbox--allow-read[=PATHS]--allow-write[=PATHS]--fs-audit
عند تفعيل العزل، تفشل العمليات المرفوضة بدلًا من الوصول إلى المسار.
راجع elide help sandbox لأسبقية الخيارات وصيغة قوائم المسارات.
راجع توثيق fs في Node.js لصيغ الوسائط القياسية.
Reference
Status: Partial · 246 of 264 suite tests pass (93.2%) · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
readFile(), readFileSync() | function | Full | Reads the entire contents of a file |
writeFile(), writeFileSync() | function | Full | Writes data to a file, replacing it if it already exists |
appendFile(), appendFileSync() | function | Full | Appends data to a file, creating it if it does not exist |
stat(), statSync() | function | Full | Retrieves file status information |
mkdir(), mkdirSync() | function | Full | Creates a directory |
rmdir(), rmdirSync() | function | Full | Removes a directory |
unlink(), unlinkSync() | function | Full | Deletes a file |
rename(), renameSync() | function | Full | Renames (moves) a file or directory |
readdir(), readdirSync() | function | Full | Reads the contents of a directory |
access(), accessSync() | function | Full | Tests whether a path is accessible under the given mode |
copyFile(), copyFileSync() | function | Full | Copies a file from src to dest |
chmod(), chmodSync() | function | Full | Changes the permissions of a file |
lstat(), lstatSync() | function | Full | Retrieves file status information without following symbolic links |
realpath(), realpathSync() | function | Full | Resolves all symbolic links and returns the real absolute path |
mkdtemp(), mkdtempSync() | function | Full | Creates a unique temporary directory using a prefix template |
open(), openSync() | function | Full | Opens a file |
close(), closeSync() | function | Full | Closes a file descriptor |
read(), readSync() | function | Full | Reads from a file descriptor into a buffer |
write(), writeSync() | function | Full | Writes to a file descriptor |
fsync(), fsyncSync() | function | Full | Flushes data and metadata of a descriptor |
fdatasync(), fdatasyncSync() | function | Full | Flushes data of a descriptor |
ftruncate(), ftruncateSync() | function | Full | Truncates a file by descriptor |
truncate(), truncateSync() | function | Full | Truncates a file by path |
readlink(), readlinkSync() | function | Full | Reads a symbolic link’s target |
link(), linkSync() | function | Full | Creates a hard link |
symlink(), symlinkSync() | function | Full | Creates a symbolic link |
rm(), rmSync() | function | Full | Removes files and directories |
cp(), cpSync() | function | Full | Copies a directory structure |
statfs(), statfsSync() | function | Full | Returns filesystem statistics |
opendir(), opendirSync() | function | Full | Opens a directory |
glob(), globSync() | function | Full | Returns paths matching a glob |
chown(), chownSync() | function | Full | Changes ownership of a file |
lchown(), lchownSync() | function | Full | Changes ownership of a symlink |
fchown(), fchownSync() | function | Full | Changes ownership by descriptor |
lchmod(), lchmodSync() | function | Not implemented | Changes permissions of a symlink (macOS) |
fchmod(), fchmodSync() | function | Full | Changes permissions by descriptor |
utimes(), utimesSync() | function | Full | Sets file times |
lutimes(), lutimesSync() | function | Full | Sets symlink times |
futimes(), futimesSync() | function | Full | Sets times by descriptor |
fstat(), fstatSync() | function | Full | Retrieves status by descriptor |
exists(), existsSync() | function | Full | Deprecated: asynchronously tests whether a path exists |
createReadStream() | function | Full | Creates a readable stream for a file |
createWriteStream() | function | Full | Creates a writable stream for a file |
watch() | function | Full | Watches for changes on a file or directory |
watchFile() | function | Full | Watches a file for changes by polling its status at an interval |
unwatchFile() | function | Full | Stops watching a file previously watched with watchFile |
promises | property | Full | Promise-based variants of all fs methods (fs/promises) |
constants | property | Full | File system constants such as F_OK, R_OK, W_OK, X_OK, COPYFILE_EXCL |
| top-level constants | constant | Full | F_OK, R_OK, W_OK, X_OK, COPYFILE_EXCL, COPYFILE_FICLONE and 46 more |
fs/promises
| Export | Kind | Status | Notes |
|---|---|---|---|
access() | function | Full | Test a path’s accessibility |
appendFile() | function | Full | Append data to a file |
chmod() | function | Full | Change file permissions |
chown() | function | Full | Change file ownership |
copyFile() | function | Full | Copy a file |
cp() | function | Full | Recursively copy a directory tree |
glob() | function | Full | Match paths against a glob pattern |
lchmod() | function | Full | Change permissions of a symbolic link (macOS) |
lchown() | function | Full | Change ownership of a symbolic link |
link() | function | Full | Create a hard link |
lstat() | function | Full | Retrieve link status (does not follow symlinks) |
lutimes() | function | Full | Set the times of a symbolic link |
mkdir() | function | Full | Create a directory |
mkdtemp() | function | Full | Create a unique temporary directory |
open() | function | Full | Open a file, resolving to a FileHandle |
opendir() | function | Full | Open a directory for iteration |
readdir() | function | Full | Read the contents of a directory |
readFile() | function | Full | Read the entire contents of a file |
readlink() | function | Full | Read the target of a symbolic link |
realpath() | function | Full | Resolve the canonical pathname |
rename() | function | Full | Rename (move) a file or directory |
rm() | function | Full | Remove files and directories |
rmdir() | function | Full | Remove a directory |
stat() | function | Full | Retrieve file status |
statfs() | function | Full | Retrieve filesystem statistics |
symlink() | function | Full | Create a symbolic link |
truncate() | function | Full | Truncate a file |
unlink() | function | Full | Delete a file |
utimes() | function | Full | Set the access and modification times of a file |
watch() | function | Full | Watch a file or directory, returning an async iterator of change events |
writeFile() | function | Full | Write data to a file, replacing it if it exists |
Not implemented
FileReadStream, FileWriteStream, Utf8Stream, lchmod, lchmodSync, openAsBlob.
Tests: node-api node:fs: 246 pass, 18 fail, 0 error, 30 skipped. Failing: test-fs-promises-file-handle-pull.js, test-fs-promises-file-handle-pullsync.js, test-fs-promises-file-handle-read-worker.js, test-fs-promises-file-handle-writer.js, test-fs-promises-watch.js, test-fs-promises.js, test-fs-read-stream-file-handle.js, test-fs-stat.js, and 10 more.