跳到主要内容

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​

ParameterType
directoryPathstring

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​

ParameterType
directoryPathstring

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​

ParameterType
filePathstring

Returns​

Promise<boolean>


list()​

list(directoryPath): AsyncIterable<StorageFilesystemEntry>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:94

枚举目录的直属条目。

Parameters​

ParameterType
directoryPathstring

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​

ParameterType
fromPathstring
toPathstring

Returns​

Promise<void>


moveFile()​

moveFile(fromPath, toPath): Promise<void>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:136

原生移动文件;仅在 StorageFilesystem.supportsFileMove 为真时调用。

Parameters​

ParameterType
fromPathstring
toPathstring

Returns​

Promise<void>


openRead()​

openRead(filePath): Promise<ReadableStream<Uint8Array<ArrayBufferLike>>>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:119

打开文件的读取流;文件不存在时抛出 NotFound。

Parameters​

ParameterType
filePathstring

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​

ParameterType
filePathstring

Returns​

Promise<StorageFileWriter>


readBlob()​

readBlob(filePath): Promise<Blob>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:111

读取文件的完整内容。

Parameters​

ParameterType
filePathstring

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​

ParameterType
directoryPathstring

Returns​

Promise<void>


removeFile()​

removeFile(filePath): Promise<void>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:125

删除文件;文件不存在时静默返回。

Parameters​

ParameterType
filePathstring

Returns​

Promise<void>


supportsDirectoryMove()​

supportsDirectoryMove(directoryPath): Promise<boolean>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:139

判断目录是否支持原生移动;目录不存在时抛出 NotFound。

Parameters​

ParameterType
directoryPathstring

Returns​

Promise<boolean>


supportsFileMove()​

supportsFileMove(filePath): Promise<boolean>;

Defined in: packages/rxdb-plugin-storage/src/filesystem/storage-filesystem.ts:133

判断文件是否支持原生移动。

Parameters​

ParameterType
filePathstring

Returns​

Promise<boolean>

Remarks​

文件不存在时抛出 NotFound —— 调用方据此在重命名前置检查里发现源文件已消失。