Перейти к содержимому

Чтение и запись файлов ​

files.write создаёт файл или заменяет его содержимое. Недостающие родительские каталоги создаются автоматически. В JavaScript и Python метод files.read по умолчанию возвращает текст. В Go для текста используйте Files.ReadText.

Один файл ​

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write("/tmp/message.txt", "hello from AgentBox");
  const message = await sandbox.files.read("/tmp/message.txt");
  console.log(message);
} finally {
  await sandbox.kill();
}

Для двоичных данных передайте { format: "bytes" } в JavaScript, format="bytes" в Python или используйте ReadBytes в Go. Все три SDK умеют читать большие файлы потоком; в Go метод Read возвращает io.ReadCloser.

Несколько файлов ​

Чтобы отправить несколько файлов одной операцией, используйте writeFiles в JavaScript, write_files в Python или WriteBatch в Go:

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.writeFiles([
    { path: "/tmp/notes/first.txt", data: "First note" },
    { path: "/tmp/notes/second.txt", data: "Second note" },
  ]);

  const entries = await sandbox.files.list("/tmp/notes");
  console.log(entries.map((entry) => entry.name).join(", "));
} finally {
  await sandbox.kill();
}

files.list возвращает содержимое каталога. Для остальных обычных операций используйте makeDir / make_dir, rename и remove.

Выбор пользователя ​

Задайте user, чтобы путь ~ указывал на домашний каталог выбранного пользователя, а создаваемые файлы принадлежали ему. Указывайте одного пользователя при записи, чтении и получении информации о файле.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write("~/message.txt", "hello from AgentBox", {
    user: "root",
  });
  const message = await sandbox.files.read("~/message.txt", { user: "root" });
  console.log(message);
  const info = await sandbox.files.getInfo("~/message.txt", { user: "root" });
  console.log(info.path, info.owner);
} finally {
  await sandbox.kill();
}