Skip to content

File System Operations

The Daytona SDK provides comprehensive file system operations through the fs module in Sandboxes. You can perform various operations like listing files, creating directories, reading and writing files, and more. This guide covers all available file system operations and best practices.

Examples

// Basic file operations
// Create a workspace
const workspace = await daytona.create();
// Create a directory
await workspace.fs.createFolder('/workspace/data', '755');
// Upload a file
const fileContent = new File(['content'], 'local_file.txt');
await workspace.fs.uploadFile('/workspace/data/file.txt', fileContent);
// List directory contents
const files = await workspace.fs.listFiles('/workspace');
files.forEach(file => {
console.log(`Name: ${file.name}`);
console.log(`Is directory: ${file.isDir}`);
console.log(`Size: ${file.size}`);
console.log(`Modified: ${file.modTime}`);
});
// Search file contents
const matches = await workspace.fs.findFiles(
'/workspace/src',
'text-of-interest'
);
matches.forEach(match => {
console.log(`Absolute file path: ${match.file}`);
console.log(`Line number: ${match.line}`);
console.log(`Line content: ${match.content}\n`);
});
// File manipulation
// Move files
await workspace.fs.moveFiles(
'/workspace/data/old.txt',
'/workspace/data/new.txt'
);
// Replace text in files
const results = await workspace.fs.replaceInFiles(
['/workspace/data/new.txt'],
'old_version',
'new_version'
);
// Set permissions
await workspace.fs.setFilePermissions(
'/workspace/data/script.sh',
{
mode: '755',
owner: 'daytona'
}
);

FileSystem

[view_source]

Provides file system operations within a Sandbox.

This class implements a high-level interface to file system operations that can be performed within a Daytona Sandbox. It supports common operations like creating, deleting, and moving files, as well as searching file contents and managing permissions.

Constructors

new FileSystem()

new FileSystem(instance: Workspace, toolboxApi: ToolboxApi): FileSystem

[view_source]

Parameters
ParameterType
instanceWorkspace
toolboxApiToolboxApi
Returns

FileSystem

Methods

createFolder()

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

[view_source]

Create a new directory in the Sandbox with specified permissions.

Parameters
ParameterTypeDescription
pathstringPath where the directory should be created
modestringDirectory permissions in octal format (e.g. “755”)
Returns

Promise<void>

Example
// Create a directory with standard permissions
await fs.createFolder('/app/data', '755');

deleteFile()

deleteFile(path: string): Promise<void>

[view_source]

Deletes a file or directory from the Sandbox.

Parameters
ParameterTypeDescription
pathstringPath to the file or directory to delete
Returns

Promise<void>

Example
// Delete a file
await fs.deleteFile('/app/temp.log');

downloadFile()

downloadFile(path: string): Promise<Blob>

[view_source]

Downloads a file from the Sandbox.

Parameters
ParameterTypeDescription
pathstringPath to the file to download
Returns

Promise<Blob>

The file contents as a Blob

Example
// Download and process a file
const fileBlob = await fs.downloadFile('/app/data.json');
console.log('File content:', fileBlob.toString());

findFiles()

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

[view_source]

Searches for text patterns within files in the Sandbox.

Parameters
ParameterTypeDescription
pathstringDirectory to search in
patternstringSearch pattern
Returns

Promise<Match[]>

Array of matches with file and line information

Example
// Find all TODO comments in TypeScript files
const matches = await fs.findFiles('/app/src', 'TODO:');
matches.forEach(match => {
console.log(`${match.file}:${match.line}: ${match.content}`);
});

getFileDetails()

getFileDetails(path: string): Promise<FileInfo>

[view_source]

Retrieves detailed information about a file or directory.

Parameters
ParameterTypeDescription
pathstringPath to the file or directory
Returns

Promise<FileInfo>

Detailed file information including size, permissions, modification time

Example
// Get file details
const info = await fs.getFileDetails('/app/config.json');
console.log(`Size: ${info.size}, Modified: ${info.modTime}`);

listFiles()

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

[view_source]

Lists contents of a directory in the Sandbox.

Parameters
ParameterTypeDescription
pathstringDirectory path to list
Returns

Promise<FileInfo[]>

Array of file and directory information

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

moveFiles()

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

[view_source]

Moves or renames a file or directory.

Parameters
ParameterTypeDescription
sourcestringSource path
destinationstringDestination path
Returns

Promise<void>

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

replaceInFiles()

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

[view_source]

Replaces text content in multiple files.

Parameters
ParameterTypeDescription
filesstring[]Array of file paths to process
patternstringPattern to replace
newValuestringReplacement text
Returns

Promise<ReplaceResult[]>

Results of the replace operation for each file

Example
// 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()

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

[view_source]

Searches for files and directories by name pattern in the Sandbox.

Parameters
ParameterTypeDescription
pathstringDirectory to search in
patternstringFile name pattern (supports globs)
Returns

Promise<SearchFilesResponse>

Search results with matching files

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

setFilePermissions()

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

[view_source]

Sets permissions and ownership for a file or directory.

Parameters
ParameterTypeDescription
pathstringPath to the file or directory
permissionsFilePermissionsParamsPermission settings
Returns

Promise<void>

Example
// Set file permissions and ownership
await fs.setFilePermissions('/app/script.sh', {
owner: 'daytona',
group: 'users',
mode: '755' // Execute permission for shell script
});

uploadFile()

uploadFile(path: string, file: File): Promise<void>

[view_source]

Uploads a file to the Sandbox.

Parameters
ParameterTypeDescription
pathstringDestination path in the Sandbox
fileFileFile to upload
Returns

Promise<void>

Example
// Upload a configuration file
const configFile = new File(['{"setting": "value"}'], 'config.json');
await fs.uploadFile('/app/config.json', configFile);

FilePermissionsParams

[view_source]

Parameters for setting file permissions in the Sandbox.

FilePermissionsParams

Example

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

Properties

PropertyTypeDescription
group?stringGroup owner of the file
mode?stringFile mode/permissions in octal format (e.g. “644”)
owner?stringUser owner of the file