StorageFilesystem
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:65
存储插件依赖的最小文件系统能力集合。
Remarks
方法集由 RxdbFileStorage 的实际调用点反推得到,不多不少 —— 多出来的方法没有测试覆盖,少一个则会把句柄细节重新漏回服务层。
Properties
lockBackend?
readonly optional lockBackend?: Pick<LockManager, "request">;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:73
跨上下文锁实现;返回 undefined 表示由 PathLockManager 自行探测环境。
Remarks
OPFS 后端返回 undefined(浏览器 Web Locks 已覆盖同源多标签页);
桌面后端必须返回 host 仲裁的实现,否则多窗口之间的临界区会各自为政。
Methods
directoryExists()
directoryExists(directoryPath): Promise<boolean>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:82
判断目录是否存在。
Parameters
| Parameter | Type |
|---|---|
directoryPath | string |
Returns
Promise<boolean>
dispose()
dispose(): void;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:145
释放缓存的句柄与连接;服务销毁时调用一次。
Returns
void
ensureDirectory()
ensureDirectory(directoryPath): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:79
创建目录及其缺失的父目录;已存在时是空操作。
Parameters
| Parameter | Type |
|---|---|
directoryPath | string |
Returns
Promise<void>
ensureRoot()
ensureRoot(): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:76
确保存储根目录存在;环境不支持时抛出 StorageUnavailableError。
Returns
Promise<void>
fileExists()
fileExists(filePath): Promise<boolean>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:97
判断文件是否存在。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<boolean>
list()
list(directoryPath): AsyncIterable<StorageFilesystemEntry>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:94
枚举目录的直属条目。
Parameters
| Parameter | Type |
|---|---|
directoryPath | string |
Returns
AsyncIterable<StorageFilesystemEntry>
Remarks
返回惰性序列:服务层需要「先物化再删除」时会自行收集成数组, 实现方不必也不应提前物化。
moveDirectory()
moveDirectory(fromPath, toPath): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:142
原生移动目录;仅在 StorageFilesystem.supportsDirectoryMove 为真时调用。
Parameters
| Parameter | Type |
|---|---|
fromPath | string |
toPath | string |
Returns
Promise<void>
moveFile()
moveFile(fromPath, toPath): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:136
原生移动文件;仅在 StorageFilesystem.supportsFileMove 为真时调用。
Parameters
| Parameter | Type |
|---|---|
fromPath | string |
toPath | string |
Returns
Promise<void>
openRead()
openRead(filePath): Promise<ReadableStream<Uint8Array<ArrayBufferLike>>>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:119
打开文件的读取流;文件不存在时抛出 NotFound。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<ReadableStream<Uint8Array<ArrayBufferLike>>>
Remarks
读写隔离保证与 StorageFilesystem.readBlob 相同 —— 也就是没有保证。
openWrite()
openWrite(filePath): Promise<StorageFileWriter>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:122
打开文件的写入句柄,缺失的父目录一并创建。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<StorageFileWriter>
readBlob()
readBlob(filePath): Promise<Blob>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:111
读取文件的完整内容。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<Blob>
Remarks
不保证读写隔离:并发写入期间的返回值只承诺「读到某个字节序列」, 既可能是旧内容、新内容,也可能是两者的拼接。OPFS 后端在 File System snapshot 失效时会抛错,桌面后端按帧读取则会读到撕裂内容 —— 接口只取二者的交集, 调用方不得依赖强的那一侧,否则换后端就会静默出错。
因此串行化由服务层的路径锁负责,而不是靠这里。需要先读后写的调用方仍应用 StorageFilesystem.openRead 转存到临时文件,不要把返回值当长期快照留着。
removeDirectory()
removeDirectory(directoryPath): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:85
递归删除目录;目录不存在时静默返回。
Parameters
| Parameter | Type |
|---|---|
directoryPath | string |
Returns
Promise<void>
removeFile()
removeFile(filePath): Promise<void>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:125
删除文件;文件不存在时静默返回。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<void>
supportsDirectoryMove()
supportsDirectoryMove(directoryPath): Promise<boolean>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:139
判断目录是否支持原生移动;目录不存在时抛出 NotFound。
Parameters
| Parameter | Type |
|---|---|
directoryPath | string |
Returns
Promise<boolean>
supportsFileMove()
supportsFileMove(filePath): Promise<boolean>;
Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:133
判断文件是否支持原生移动。
Parameters
| Parameter | Type |
|---|---|
filePath | string |
Returns
Promise<boolean>
Remarks
文件不存在时抛出 NotFound —— 调用方据此在重命名前置检查里发现源文件已消失。