---
title: "ファイルシステム"
hideTitleOnPage: true
---


## FileSystem

サンドボックス内でのファイルシステム操作を提供します。

### Constructors

#### new FileSystem()

```ts
new FileSystem(
   sandboxId: string, 
   clientConfig: Configuration, 
   toolboxApi: ToolboxApi, 
   getRootDir: () => Promise<string>): FileSystem
```

**Parameters**:

- `sandboxId` _string_
- `clientConfig` _Configuration_
- `toolboxApi` _ToolboxApi_
- `getRootDir` _\(\) =\> Promise\<string\>_


**Returns**:

- `FileSystem`

### Methods

#### createFolder()

```ts
createFolder(path: string, mode: string): Promise<void>
```

指定した権限でサンドボックス内に新しいディレクトリを作成します。

**Parameters**:

- `path` _string_ - ディレクトリを作成するパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `mode` _string_ - 8 進数形式のディレクトリ権限（例: "755"）


**Returns**:

- `Promise<void>`

**Example:**

```ts
// 標準的な権限でディレクトリを作成
await fs.createFolder('app/data', '755');
```

***

#### deleteFile()

```ts
deleteFile(path: string): Promise<void>
```

サンドボックスからファイルまたはディレクトリを削除します。

**Parameters**:

- `path` _string_ - 削除するファイルまたはディレクトリのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。


**Returns**:

- `Promise<void>`

**Example:**

```ts
// ファイルを削除
await fs.deleteFile('app/temp.log');
```

***

#### downloadFile()

##### Call Signature

```ts
downloadFile(remotePath: string, timeout?: number): Promise<Buffer<ArrayBufferLike>>
```

サンドボックスからファイルをダウンロードします。このメソッドはファイル全体をメモリに読み込むため、
大きなファイルのダウンロードには推奨されません。

**Parameters**:

- `remotePath` _string_ - ダウンロードするファイルのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `timeout?` _number_ - ダウンロード操作のタイムアウト（秒）。0 はタイムアウトなしを意味します。
    既定は 30 分です。

**Returns**:

- `Promise<Buffer<ArrayBufferLike>>` - ファイル内容を表す Buffer。

**Example:**

```ts
// ファイルをダウンロードして処理
const fileBuffer = await fs.downloadFile('tmp/data.json');
console.log('File content:', fileBuffer.toString());
```

##### Call Signature

```ts
downloadFile(
   remotePath: string, 
   localPath: string, 
timeout?: number): Promise<void>
```

サンドボックスからファイルをダウンロードしてローカルファイルに保存します。このメソッドはストリーミングを使用して
ファイルをダウンロードするため、より大きなファイルのダウンロードに適しています。

**Parameters**:

- `remotePath` _string_ - サンドボックス内でダウンロードするファイルのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `localPath` _string_ - ダウンロードしたファイルの保存先パス。
- `timeout?` _number_ - ダウンロード操作のタイムアウト（秒）。0 はタイムアウトなしを意味します。
    既定は 30 分です。

**Returns**:

- `Promise<void>`

**Example:**

```ts
// ファイルをダウンロードして保存
await fs.downloadFile('tmp/data.json', 'local_file.json');
```

***

#### findFiles()

```ts
findFiles(path: string, pattern: string): Promise<Match[]>
```

サンドボックス内のファイルでテキストパターンを検索します。

**Parameters**:

- `path` _string_ - 検索対象のディレクトリ。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `pattern` _string_ - 検索パターン


**Returns**:

- `Promise<Match[]>` - ファイルおよび行情報を含む一致結果の配列

**Example:**

```ts
// TypeScript ファイル内の TODO コメントをすべて検索
const matches = await fs.findFiles('app/src', 'TODO:');
matches.forEach(match => {
  console.log(`${match.file}:${match.line}: ${match.content}`);
});
```

***

#### getFileDetails()

```ts
getFileDetails(path: string): Promise<FileInfo>
```

ファイルまたはディレクトリの詳細情報を取得します。

**Parameters**:

- `path` _string_ - ファイルまたはディレクトリのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。


**Returns**:

- `Promise<FileInfo>` - サイズ、権限、更新時刻などの詳細情報

**Example:**

```ts
// ファイルの詳細を取得
const info = await fs.getFileDetails('app/config.json');
console.log(`Size: ${info.size}, Modified: ${info.modTime}`);
```

***

#### listFiles()

```ts
listFiles(path: string): Promise<FileInfo[]>
```

サンドボックス内のディレクトリの内容を一覧表示します。

**パラメータ**:

- `path` _string_ - 一覧表示するディレクトリのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。


**戻り値**:

- `Promise<FileInfo[]>` - ファイルおよびディレクトリ情報の配列

**例:**

```ts
// List directory contents
const files = await fs.listFiles('app/src');
files.forEach(file => {
  console.log(`${file.name} (${file.size} bytes)`);
});
```

***

#### moveFiles()

```ts
moveFiles(source: string, destination: string): Promise<void>
```

ファイルまたはディレクトリを移動または名前変更します。

**パラメータ**:

- `source` _string_ - 移動元のパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `destination` _string_ - 移動先のパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。


**戻り値**:

- `Promise<void>`

**例:**

```ts
// Move a file to a new location
await fs.moveFiles('app/temp/data.json', 'app/data/data.json');
```

***

#### replaceInFiles()

```ts
replaceInFiles(
   files: string[], 
   pattern: string, 
newValue: string): Promise<ReplaceResult[]>
```

複数のファイル内のテキストを置換します。

**パラメータ**:

- `files` _string\[\]_ - 処理するファイルパスの配列。相対パスはユーザーの
- `pattern` _string_ - 置換対象のパターン
- `newValue` _string_ - 置換後のテキスト


**戻り値**:

- `Promise<ReplaceResult[]>` - 各ファイルに対する置換結果

**例:**

```ts
// Update version number across multiple files
const results = await fs.replaceInFiles(
  ['app/package.json', 'app/version.ts'],
  '"version": "1.0.0"',
  '"version": "1.1.0"'
);
```

***

#### searchFiles()

```ts
searchFiles(path: string, pattern: string): Promise<SearchFilesResponse>
```

サンドボックス内で、名前パターンに一致するファイルやディレクトリを検索します。

**パラメータ**:

- `path` _string_ - 検索対象のディレクトリ。相対パスはユーザーの
- `pattern` _string_ - ファイル名のパターン（グロブ対応）


**戻り値**:

- `Promise<SearchFilesResponse>` - 一致したファイルを含む検索結果

**例:**

```ts
// Find all TypeScript files
const result = await fs.searchFiles('app', '*.ts');
result.files.forEach(file => console.log(file));
```

***

#### setFilePermissions()

```ts
setFilePermissions(path: string, permissions: FilePermissionsParams): Promise<void>
```

ファイルまたはディレクトリの権限と所有権を設定します。

**パラメータ**:

- `path` _string_ - ファイルまたはディレクトリのパス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `permissions` _FilePermissionsParams_ - 権限設定


**戻り値**:

- `Promise<void>`

**例:**

```ts
// Set file permissions and ownership
await fs.setFilePermissions('app/script.sh', {
  owner: 'daytona',
  group: 'users',
  mode: '755'  // シェルスクリプトに実行権限を付与
});
```

***

#### uploadFile()

##### 呼び出しシグネチャ

```ts
uploadFile(
   file: Buffer, 
   remotePath: string, 
timeout?: number): Promise<void>
```

サンドボックスにファイルをアップロードします。このメソッドはファイル全体をメモリに読み込むため、大きなファイルのアップロードには推奨されません。

**パラメータ**:

- `file` _Buffer_ - アップロードするファイルのバッファ。
- `remotePath` _string_ - サンドボックス内のアップロード先パス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `timeout?` _number_ - アップロード処理のタイムアウト（秒）。0 はタイムアウトなしを意味します。
    既定値は30分です。

**戻り値**:

- `Promise<void>`

**例:**

```ts
// Upload a configuration file
await fs.uploadFile(Buffer.from('{"setting": "value"}'), 'tmp/config.json');
```

##### 呼び出しシグネチャ

```ts
uploadFile(
   localPath: string, 
   remotePath: string, 
timeout?: number): Promise<void>
```

ローカルファイルシステムからサンドボックスへファイルをアップロードします。このメソッドはストリーミングでアップロードを行うため、大きなファイルのアップロードに適しています。

**パラメータ**:

- `localPath` _string_ - アップロードするローカルファイルのパス。
- `remotePath` _string_ - サンドボックス内の保存先パス。相対パスはユーザーのルートディレクトリを基準に解決されます。
- `timeout?` _number_ - アップロード操作のタイムアウト（秒）。0 はタイムアウトなしを意味します。
    既定値は 30 分です。

**戻り値**:

- `Promise<void>`

**例:**

```ts
// ローカルファイルをアップロード
await fs.uploadFile('local_file.txt', 'tmp/file.txt');
```

***

#### uploadFiles()

```ts
uploadFiles(files: FileUpload[], timeout?: number): Promise<void>
```

複数のファイルをサンドボックスにアップロードします。保存先パスに既にファイルが存在する場合は上書きされます。

**パラメータ**:

- `files` _FileUpload\[\]_ - アップロードするファイルの配列。
- `timeout?` _number = ..._ - アップロード操作のタイムアウト（秒）。0 はタイムアウトなしを意味します。
    既定値は 30 分です。


**戻り値**:

- `Promise<void>`

**例:**

```ts
// 複数のテキストファイルをアップロード
const files = [
  {
    source: Buffer.from('Content of file 1'),
    destination: '/tmp/file1.txt'
  },
  {
    source: 'app/data/file2.txt',
    destination: '/tmp/file2.txt'
  },
  {
    source: Buffer.from('{"key": "value"}'),
    destination: '/tmp/config.json'
  }
];
await fs.uploadFiles(files);
```

***


## FilePermissionsParams

サンドボックス内のファイル権限を設定するためのパラメータ。

**プロパティ**:

- `group?` _string_ - ファイルのグループ所有者
- `mode?` _string_ - 8進数形式のファイルモード／権限（例: "644"）
- `owner?` _string_ - ファイルのユーザー所有者
    




**例:**

```ts
const permissions: FilePermissionsParams = {
  mode: '644',
  owner: 'daytona',
  group: 'users'
};
```
## FileUpload

サンドボックスにアップロードするファイルを表します。

**プロパティ**:

- `destination` _string_ - サンドボックス内の絶対パス。相対パスはユーザーの
    ルートディレクトリを基準に解決されます。
- `source` _string \| Buffer\<ArrayBufferLike\>_ - アップロード対象のファイル。Buffer の場合、ファイル内容として解釈され、メモリに読み込まれます。
    メモリに収まることを確認してください。収まらない場合はローカルファイルパスを使用すると、その内容がサンドボックスへストリーミングされます。