概述FSA 不支持原子替换,可通过临时文件与备份策略提高安全性。临时写入与替换async function safeReplace(updater) { const [handle] = await window.showOpenFilePicker({ multiple: false }); const src = await handle.getFile(); const backup = await window.showSaveFilePicker({ suggestedName: `${src.name}.bak` }); const bws = await backup.createWritable(); await bws.write(await src.arrayBuffer()); await bws.close(); const tmp = await window.showSaveFilePicker({ suggestedName: `${src.name}.tmp` }); const tws = await tmp.createWritable(); const next = await updater(await src.text()); await tws.write(new Blob([next], { type: src.type || 'text/plain' })); await tws.close(); const ws = await handle.createWritable(); await ws.write(await (await tmp.getFile()).arrayBuffer()); await ws.close(); }

发表评论 取消回复