Чтение и запись файлов
files.write создаёт файл или заменяет его содержимое. Недостающие родительские каталоги создаются автоматически. В JavaScript и Python метод files.read по умолчанию возвращает текст. В Go для текста используйте Files.ReadText.
Один файл
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:
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, чтобы путь ~ указывал на домашний каталог выбранного пользователя, а создаваемые файлы принадлежали ему. Указывайте одного пользователя при записи, чтении и получении информации о файле.
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();
}