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 workspaceconst workspace = await daytona.create();
// Create a directoryawait workspace.fs.createFolder('/workspace/data', '755');
// Upload a fileconst fileContent = new File(['content'], 'local_file.txt');await workspace.fs.uploadFile('/workspace/data/file.txt', fileContent);
// List directory contentsconst 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 contentsconst 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 filesawait workspace.fs.moveFiles( '/workspace/data/old.txt', '/workspace/data/new.txt');
// Replace text in filesconst results = await workspace.fs.replaceInFiles( ['/workspace/data/new.txt'], 'old_version', 'new_version');
// Set permissionsawait workspace.fs.setFilePermissions( '/workspace/data/script.sh', { mode: '755', owner: 'daytona' });
FileSystem
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
Parameters
Parameter | Type |
---|---|
instance | Workspace |
toolboxApi | ToolboxApi |
Returns
FileSystem
Methods
createFolder()
createFolder(path: string, mode: string): Promise<void>
Create a new directory in the Sandbox with specified permissions.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Path where the directory should be created |
mode | string | Directory permissions in octal format (e.g. “755”) |
Returns
Promise<void>
Example
// Create a directory with standard permissionsawait fs.createFolder('/app/data', '755');
deleteFile()
deleteFile(path: string): Promise<void>
Deletes a file or directory from the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Path to the file or directory to delete |
Returns
Promise<void>
Example
// Delete a fileawait fs.deleteFile('/app/temp.log');
downloadFile()
downloadFile(path: string): Promise<Blob>
Downloads a file from the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Path to the file to download |
Returns
Promise<Blob>
The file contents as a Blob
Example
// Download and process a fileconst fileBlob = await fs.downloadFile('/app/data.json');console.log('File content:', fileBlob.toString());
findFiles()
findFiles(path: string, pattern: string): Promise<Match[]>
Searches for text patterns within files in the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Directory to search in |
pattern | string | Search pattern |
Returns
Promise<Match[]>
Array of matches with file and line information
Example
// Find all TODO comments in TypeScript filesconst matches = await fs.findFiles('/app/src', 'TODO:');matches.forEach(match => { console.log(`${match.file}:${match.line}: ${match.content}`);});
getFileDetails()
getFileDetails(path: string): Promise<FileInfo>
Retrieves detailed information about a file or directory.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Path to the file or directory |
Returns
Promise<FileInfo>
Detailed file information including size, permissions, modification time
Example
// Get file detailsconst info = await fs.getFileDetails('/app/config.json');console.log(`Size: ${info.size}, Modified: ${info.modTime}`);
listFiles()
listFiles(path: string): Promise<FileInfo[]>
Lists contents of a directory in the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Directory path to list |
Returns
Promise<FileInfo[]>
Array of file and directory information
Example
// List directory contentsconst files = await fs.listFiles('/app/src');files.forEach(file => { console.log(`${file.name} (${file.size} bytes)`);});
moveFiles()
moveFiles(source: string, destination: string): Promise<void>
Moves or renames a file or directory.
Parameters
Parameter | Type | Description |
---|---|---|
source | string | Source path |
destination | string | Destination path |
Returns
Promise<void>
Example
// Move a file to a new locationawait fs.moveFiles('/app/temp/data.json', '/app/data/data.json');
replaceInFiles()
replaceInFiles( files: string[], pattern: string,newValue: string): Promise<ReplaceResult[]>
Replaces text content in multiple files.
Parameters
Parameter | Type | Description |
---|---|---|
files | string[] | Array of file paths to process |
pattern | string | Pattern to replace |
newValue | string | Replacement text |
Returns
Promise<ReplaceResult[]>
Results of the replace operation for each file
Example
// Update version number across multiple filesconst 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>
Searches for files and directories by name pattern in the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Directory to search in |
pattern | string | File name pattern (supports globs) |
Returns
Promise<SearchFilesResponse>
Search results with matching files
Example
// Find all TypeScript filesconst result = await fs.searchFiles('/app', '*.ts');result.files.forEach(file => console.log(file));
setFilePermissions()
setFilePermissions(path: string, permissions: FilePermissionsParams): Promise<void>
Sets permissions and ownership for a file or directory.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Path to the file or directory |
permissions | FilePermissionsParams | Permission settings |
Returns
Promise<void>
Example
// Set file permissions and ownershipawait fs.setFilePermissions('/app/script.sh', { owner: 'daytona', group: 'users', mode: '755' // Execute permission for shell script});
uploadFile()
uploadFile(path: string, file: File): Promise<void>
Uploads a file to the Sandbox.
Parameters
Parameter | Type | Description |
---|---|---|
path | string | Destination path in the Sandbox |
file | File | File to upload |
Returns
Promise<void>
Example
// Upload a configuration fileconst configFile = new File(['{"setting": "value"}'], 'config.json');await fs.uploadFile('/app/config.json', configFile);
FilePermissionsParams
Parameters for setting file permissions in the Sandbox.
FilePermissionsParams
Example
const permissions: FilePermissionsParams = { mode: '644', owner: 'daytona', group: 'users'};
Properties
Property | Type | Description |
---|---|---|
group? | string | Group owner of the file |
mode? | string | File mode/permissions in octal format (e.g. “644”) |
owner? | string | User owner of the file |