Spec-Zone.ru › Deno 2

класс Deno.FsFile

реализует Disposable

Абстракция Deno для чтения и записи файлов.

Это наиболее прямой способ работы с файлами в Deno и рекомендуется по сравнению с использованием отдельных функций в пространстве имен Deno.

using file = await Deno.open("/foo/bar.txt", { read: true });
const fileInfo = await file.stat();
if (fileInfo.isFile) {
  const buf = new Uint8Array(100);
  const numberOfBytesRead = await file.read(buf); // 11 bytes
  const text = new TextDecoder().decode(buf);  // "hello world"
}

Свойства

только для чтения
readable: ReadableStream<Uint8Array>

Экземпляр ReadableStream, представляющий собой байтовый контент файла. Это упрощает взаимодействие с другими API на основе потоков веб-страниц.

using file = await Deno.open("my_file.txt", { read: true });
const decoder = new TextDecoder();
for await (const chunk of file.readable) {
  console.log(decoder.decode(chunk));
}
только для чтения
writable: WritableStream<Uint8Array>

Экземпляр WritableStream, предназначенный для записи содержимого файла. Это упрощает взаимодействие с другими API на основе потоков веб-страниц.

const items = ["hello", "world"];
using file = await Deno.open("my_file.txt", { write: true });
const encoder = new TextEncoder();
const writer = file.writable.getWriter();
for (const item of items) {
  await writer.write(encoder.encode(item));
}

Методы

[Symbol.dispose](): void
close(): void

Закройте файл. Закрытие файла после завершения работы с ним важно для предотвращения утечки ресурсов.

using file = await Deno.open("my_file.txt");
// do work with "file" object
isTerminal(): boolean

Проверяет, является ли ресурс файла TTY (терминалом).

// This example is system and context specific
using file = await Deno.open("/dev/tty6");
file.isTerminal(); // true
lock(exclusive?: boolean): Promise<void>

Получить консультационный файловый замок для файла.

lockSync(exclusive?: boolean): void

Синхронно получить консультационный файловый замок синхронно для файла.

read(p: Uint8Array): Promise<number | null>

Чтение файла в буфер массива (p).

Возвращает количество прочитанных байтов во время операции или EOF (null) при отсутствии данных для чтения.

Возможна ситуация, когда чтение успешно вернет 0 байтов. Это не означает EOF.

Гарантируется не полное чтение буфера за один вызов.

// if "/foo/bar.txt" contains the text "hello world":
using file = await Deno.open("/foo/bar.txt");
const buf = new Uint8Array(100);
const numberOfBytesRead = await file.read(buf); // 11 bytes
const text = new TextDecoder().decode(buf);  // "hello world"
readSync(p: Uint8Array): number | null

Синхронное чтение из файла в буфер массива (p).

Возвращает количество прочитанных байтов во время операции или EOF (null) при отсутствии данных для чтения.

Возможна ситуация, когда чтение успешно вернет 0 байтов. Это не означает EOF.

Гарантируется не полное чтение буфера за один вызов.

// if "/foo/bar.txt" contains the text "hello world":
using file = Deno.openSync("/foo/bar.txt");
const buf = new Uint8Array(100);
const numberOfBytesRead = file.readSync(buf); // 11 bytes
const text = new TextDecoder().decode(buf);  // "hello world"
seek(offset: number | bigint,whence: SeekMode,): Promise<number>

Переход к указанному offset в режиме, заданном whence. Вызов возвращает новую позицию в ресурсе (байты от начала).

// Given the file contains "Hello world" text, which is 11 bytes long:
using file = await Deno.open(
  "hello.txt",
  { read: true, write: true, truncate: true, create: true },
);
await file.write(new TextEncoder().encode("Hello world"));

// advance cursor 6 bytes
const cursorPosition = await file.seek(6, Deno.SeekMode.Start);
console.log(cursorPosition);  // 6
const buf = new Uint8Array(100);
await file.read(buf);
console.log(new TextDecoder().decode(buf)); // "world"

Режим поиска работает следующим образом:

// Given the file contains "Hello world" text, which is 11 bytes long:
const file = await Deno.open(
  "hello.txt",
  { read: true, write: true, truncate: true, create: true },
);
await file.write(new TextEncoder().encode("Hello world"));

// Seek 6 bytes from the start of the file
console.log(await file.seek(6, Deno.SeekMode.Start)); // "6"
// Seek 2 more bytes from the current position
console.log(await file.seek(2, Deno.SeekMode.Current)); // "8"
// Seek backwards 2 bytes from the end of the file
console.log(await file.seek(-2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
seekSync(offset: number | bigint,whence: SeekMode,): number

Синхронный переход к указанному offset в режиме, заданном whence. Возвращается новая позиция в ресурсе (байты от начала).

using file = Deno.openSync(
  "hello.txt",
  { read: true, write: true, truncate: true, create: true },
);
file.writeSync(new TextEncoder().encode("Hello world"));

// advance cursor 6 bytes
const cursorPosition = file.seekSync(6, Deno.SeekMode.Start);
console.log(cursorPosition);  // 6
const buf = new Uint8Array(100);
file.readSync(buf);
console.log(new TextDecoder().decode(buf)); // "world"

Режим поиска работает следующим образом:

// Given the file contains "Hello world" text, which is 11 bytes long:
using file = Deno.openSync(
  "hello.txt",
  { read: true, write: true, truncate: true, create: true },
);
file.writeSync(new TextEncoder().encode("Hello world"));

// Seek 6 bytes from the start of the file
console.log(file.seekSync(6, Deno.SeekMode.Start)); // "6"
// Seek 2 more bytes from the current position
console.log(file.seekSync(2, Deno.SeekMode.Current)); // "8"
// Seek backwards 2 bytes from the end of the file
console.log(file.seekSync(-2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
setRaw(mode: boolean,options?: SetRawOptions,): void

Установить режим TTY в сырой или нет. В сыром режиме символы читаются и возвращаются как есть, без обработки. Вся специальная обработка символов терминалом отключена, включая вывод символов ввода. Чтение с устройства TTY в сыром режиме быстрее, чем чтение с устройства TTY в каноническом режиме.

using file = await Deno.open("/dev/tty6");
file.setRaw(true, { cbreak: true });
stat(): Promise<FileInfo>

Возвращает Deno.FileInfo для файла.

import { assert } from "jsr:@std/assert";

using file = await Deno.open("hello.txt");
const fileInfo = await file.stat();
assert(fileInfo.isFile);
statSync(): FileInfo

Синхронно возвращает Deno.FileInfo для файла.

import { assert } from "jsr:@std/assert";

using file = Deno.openSync("hello.txt")
const fileInfo = file.statSync();
assert(fileInfo.isFile);
sync(): Promise<void>

Очищает все ожидающие операции с данными и метаданными данного потока файла в диск.

const file = await Deno.open(
  "my_file.txt",
  { read: true, write: true, create: true },
);
await file.write(new TextEncoder().encode("Hello World"));
await file.truncate(1);
await file.sync();
console.log(await Deno.readTextFile("my_file.txt")); // H
syncData(): Promise<void>

Очищает все ожидающие операции с данными данного потока файла в диск.

using file = await Deno.open(
 "my_file.txt",
 { read: true, write: true, create: true },
);
await file.write(new TextEncoder().encode("Hello World"));
await file.syncData();
console.log(await Deno.readTextFile("my_file.txt")); // Hello World
syncDataSync(): void

Синхронно очищает все ожидающие операции с данными данного потока файла в диск.

using file = Deno.openSync(
 "my_file.txt",
 { read: true, write: true, create: true },
);
file.writeSync(new TextEncoder().encode("Hello World"));
file.syncDataSync();
console.log(Deno.readTextFileSync("my_file.txt")); // Hello World
syncSync(): void

Синхронно очищает все ожидающие операции с данными и метаданными данного потока файла в диск.

const file = Deno.openSync(
  "my_file.txt",
  { read: true, write: true, create: true },
);
file.writeSync(new TextEncoder().encode("Hello World"));
file.truncateSync(1);
file.syncSync();
console.log(Deno.readTextFileSync("my_file.txt")); // H
truncate(len?: number): Promise<void>

Усекает (или расширяет) файл до указанного len. Если len не указан, то все содержимое файла усекается.

Усечение всего файла

using file = await Deno.open("my_file.txt", { write: true });
await file.truncate();

Усечение части файла

// if "my_file.txt" contains the text "hello world":
using file = await Deno.open("my_file.txt", { write: true });
await file.truncate(7);
const buf = new Uint8Array(100);
await file.read(buf);
const text = new TextDecoder().decode(buf); // "hello w"
truncateSync(len?: number): void

Синхронно усекает (или расширяет) файл до указанного len. Если len не указан, то все содержимое файла усекается.

Усечение всего файла

using file = Deno.openSync("my_file.txt", { write: true });
file.truncateSync();

Усечение части файла

// if "my_file.txt" contains the text "hello world":
using file = Deno.openSync("my_file.txt", { write: true });
file.truncateSync(7);
const buf = new Uint8Array(100);
file.readSync(buf);
const text = new TextDecoder().decode(buf); // "hello w"
unlock(): Promise<void>

Освободить консультационный файловый замок для файла.

unlockSync(): void

Синхронно освободить консультационный файловый замок для файла.

utime(atime: number | Date,mtime: number | Date,): Promise<void>

Изменяет время доступа (atime) и изменения (mtime) файла. Указанное время может быть в секундах (время эпохи Unix) или в виде Date объектов.

using file = await Deno.open("file.txt", { create: true, write: true });
await file.utime(1556495550, new Date());
utimeSync(atime: number | Date,mtime: number | Date,): void

Синхронно изменяет время доступа (atime) и изменения (mtime) файла. Указанное время может быть в секундах (время эпохи Unix) или в виде Date объектов.

using file = Deno.openSync("file.txt", { create: true, write: true });
file.utime(1556495550, new Date());
write(p: Uint8Array): Promise<number>

Записать содержимое буфера массива (p) в файл.

Возвращает количество записанных байтов.

Гарантируется не полное запись буфера за один вызов.

const encoder = new TextEncoder();
const data = encoder.encode("Hello world");
using file = await Deno.open("/foo/bar.txt", { write: true });
const bytesWritten = await file.write(data); // 11
writeSync(p: Uint8Array): number

Синхронно записывает содержимое буфера массива (p) в файл.

Возвращает количество записанных байтов.

Гарантируется, что весь буфер будет записан в одном вызове.

const encoder = new TextEncoder();
const data = encoder.encode("Hello world");
using file = Deno.openSync("/foo/bar.txt", { write: true });
const bytesWritten = file.writeSync(data); // 11

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/deno/~/Deno.FsFile

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API