# FsFileBinding

`import { FsFileBinding } from "destack:fs/binding";`

Filesystem file binding family.

```ds title="FsFileBinding"
export interface FsFileBinding {
    open(entry: &'a readonly FilesystemEntry, options: FileOpenOptions): Result<FileHandle, HostError>;
    close(file: FileHandle): Result<void, HostError>;
    read(file: FileHandle, buffer: &'a [uint8], options: FileReadOptions): Result<uint64, HostError>;
    write(file: FileHandle, buffer: &'a readonly [uint8], options: FileWriteOptions): Result<uint64, HostError>;
    readMany(file: FileHandle, buffers: &'a [[uint8]], options: FileReadOptions): Result<uint64, HostError>;
    writeMany(file: FileHandle, buffers: &'a readonly [[uint8]], options: FileWriteOptions): Result<uint64, HostError>;
    seek(file: FileHandle, offset: FileOffset, origin: FileSeekOrigin): Result<FileOffset, HostError>;
    truncate(file: FileHandle, size: FileSize): Result<void, HostError>;
    sync(file: FileHandle): Result<void, HostError>;
    syncData(file: FileHandle): Result<void, HostError>;
    syncRange(file: FileHandle, range: FileRange, flags: FileSyncFlags): Result<void, HostError>;
    copyRange(source: FileHandle, sourceRange: FileRange, target: FileHandle, targetOffset: FileOffset): Result<uint64, HostError>;
    cloneRange(source: FileHandle, sourceRange: FileRange, target: FileHandle, targetOffset: FileOffset): Result<void, HostError>;
    allocate(file: FileHandle, range: FileRange, flags: FileAllocateFlags): Result<void, HostError>;
    advise(file: FileHandle, range: FileRange, advice: FileAdvice): Result<void, HostError>;
    lock(file: FileHandle, options: FileLockOptions): Result<void, HostError>;
    duplicate(file: FileHandle): Result<FileHandle, HostError>;
}
```

[language/library/src/fs/binding/file.ds:204:383](https://github.com/destack-sh/destack/blob/main/language/library/src/fs/binding/file.ds#L204-L383)

## Members

### `open(entry: &'a readonly FilesystemEntry, options: FileOpenOptions): Result<FileHandle, HostError>`

Open one filesystem entry as a file handle.

### `close(file: FileHandle): Result<void, HostError>`

Close one open file handle.

### `read(file: FileHandle, buffer: &'a [uint8], options: FileReadOptions): Result<uint64, HostError>`

Read bytes from an open file into an output buffer.

### `write(file: FileHandle, buffer: &'a readonly [uint8], options: FileWriteOptions): Result<uint64, HostError>`

Write bytes to an open file from an input buffer.

### `readMany(file: FileHandle, buffers: &'a [[uint8]], options: FileReadOptions): Result<uint64, HostError>`

Read bytes from an open file into multiple output buffers.

### `writeMany(file: FileHandle, buffers: &'a readonly [[uint8]], options: FileWriteOptions): Result<uint64, HostError>`

Write bytes to an open file from multiple input buffers.

### `seek(file: FileHandle, offset: FileOffset, origin: FileSeekOrigin): Result<FileOffset, HostError>`

Reposition an open file and return the new offset.

### `truncate(file: FileHandle, size: FileSize): Result<void, HostError>`

Truncate an open file to the requested size.

### `sync(file: FileHandle): Result<void, HostError>`

Synchronize file contents and metadata with storage.

### `syncData(file: FileHandle): Result<void, HostError>`

Synchronize file contents with storage.

### `syncRange(file: FileHandle, range: FileRange, flags: FileSyncFlags): Result<void, HostError>`

Synchronize one byte range with storage.

### `copyRange(source: FileHandle, sourceRange: FileRange, target: FileHandle, targetOffset: FileOffset): Result<uint64, HostError>`

Copy bytes between two open files.

### `cloneRange(source: FileHandle, sourceRange: FileRange, target: FileHandle, targetOffset: FileOffset): Result<void, HostError>`

Clone bytes between two open files.

### `allocate(file: FileHandle, range: FileRange, flags: FileAllocateFlags): Result<void, HostError>`

Allocate, release, or reshape storage for one byte range.

### `advise(file: FileHandle, range: FileRange, advice: FileAdvice): Result<void, HostError>`

Provide access pattern advice for one byte range.

### `lock(file: FileHandle, options: FileLockOptions): Result<void, HostError>`

Apply or release one advisory file lock.

### `duplicate(file: FileHandle): Result<FileHandle, HostError>`

Duplicate an open file handle into a new owned resource.
