Baseline 2023 *
Newly available
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
File System Access API ã® FileSystemFileHandle
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ããã¡ã¤ã«ã·ã¹ãã ã®ã¨ã³ããªã¼ã®ãã³ãã«ã表ãã¾ãããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ã¯ãwindow.showOpenFilePicker()
ã¡ã½ãããéãã¦ã¢ã¯ã»ã¹ãã¾ãã
注æããã¹ãç¹ã¨ãã¦ãèªã¿æ¸ãã®æä½ã«ã¯ãã¡ã¤ã«ã¢ã¯ã»ã¹ã®è¨±å¯ãå¿
è¦ã§ããããã®è¨±å¯ã¯åããªãªã¸ã³ã®ä»ã®ã¿ããéããã¦ããªãå ´åããã¼ã¸ãåèªã¿è¾¼ã¿ããã¨æ¶æ»
ãã¾ããFileSystemHandle
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã® queryPermission
ã¡ã½ãããç¨ããã¨ããã¡ã¤ã«ã«ã¢ã¯ã»ã¹ããåã«è¨±å¯ã®ç¶æ
ã確ããããã¨ãã§ãã¾ãã
親㮠FileSystemHandle
ããããããã£ãç¶æ¿ãã¾ãã
親㮠FileSystemHandle
ããã¡ã½ãããç¶æ¿ãã¾ãã
getFile()
ãã³ãã«ã表ãã¨ã³ããªã¼ã®ãã£ã¹ã¯ä¸ã§ã®ç¶æ
ã表ã File
ãªãã¸ã§ã¯ãã§è§£æ±ºãã Promise
ãè¿ãã¾ãã
createSyncAccessHandle()
ãã¡ã¤ã«ãåæå¼ã§èªã¿æ¸ããããã¨ãã§ãã FileSystemSyncAccessHandle
ãªãã¸ã§ã¯ãã§è§£æ±ºãã Promise
ãè¿ãã¾ãã ãã®ã¡ã½ããã¯åæå¼ã§ããã¨ããæ§è³ªã«ããããã©ã¼ãã³ã¹ä¸æå©ã§ãããããç¨ã® Web Workers ã®ä¸ã§ããç¨ãããã¨ãã§ãã¾ããã
createWritable()
ãã¡ã¤ã«ã«æ¸ãè¾¼ããã¨ãã§ããæ°ãã使ããã FileSystemWritableFileStream
ãªãã¸ã§ã¯ãã§è§£æ±ºãã Promise
ãè¿ãã¾ãã
以ä¸ã®éåæé¢æ°ã¯ããã¡ã¤ã«ããã«ã¼ã表示ãããã¡ã¤ã«ã鏿ããã㨠getFile()
ã¡ã½ãããç¨ãã¦å
容ãåå¾ãã¾ãã
async function getTheFile() {
const pickerOpts = {
types: [
{
description: "Images",
accept: {
"image/*": [".png", ".gif", ".jpeg", ".jpg"],
},
},
],
excludeAcceptAllOption: true,
multiple: false,
};
// ãã¡ã¤ã«ããã«ã¼ãéã
const [fileHandle] = await window.showOpenFilePicker(pickerOpts);
// ãã¡ã¤ã«ã®å
容ãå¾ã
const fileData = await fileHandle.getFile();
return fileData;
}
ãã¡ã¤ã«ã«æ¸ãè¾¼ã
以ä¸ã®éåæé¢æ°ã¯ãä¸ããããå 容ããã¡ã¤ã«ãã³ãã«ã«æ¸ãè¾¼ããã¨ã«ããããã£ã¹ã¯ã«æ¸ãè¾¼ã¿ã¾ãã
async function writeFile(fileHandle, contents) {
// æ¸ãè¾¼ã¿å
ã® FileSystemWritableFileStream ã使ãã
const writable = await fileHandle.createWritable();
// ãã¡ã¤ã«ã®å
容ãã¹ããªã¼ã ã«æ¸ãè¾¼ã
await writable.write(contents);
// ãã¡ã¤ã«ãéããå
容ããã£ã¹ã¯ã«æ¸ãè¾¼ã
await writable.close();
}
åæå¼ã§ãã¡ã¤ã«ãèªã¿æ¸ããã
以ä¸ã®éåæã®ã¤ãã³ããã³ãã©ã¼ã¯ãWeb Worker å ã«ããã¾ããã¡ã¤ã³ã¹ã¬ããããã®ã¡ãã»ã¼ã¸ãåä¿¡ããã¨ã以ä¸ã®åä½ããã¾ãã
ArrayBuffer
ã使ãã¾ããonmessage = async (e) => {
// ã¡ã¤ã³ã¹ã¬ããããã®å¦ç対象ã®ã¡ãã»ã¼ã¸ãåå¾ãã
const message = e.data;
// draft ãã¡ã¤ã«ã¸ã®ãã³ãã«ãåå¾ãã
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
// åæå¼ã®ã¢ã¯ã»ã¹ãã³ãã«ãåå¾ãã
const accessHandle = await draftHandle.createSyncAccessHandle();
// ãã¡ã¤ã«ã®ãµã¤ãºãåå¾ãã
const fileSize = accessHandle.getSize();
// ãã¡ã¤ã«ã®å
容ããããã¡ã¼ã«èªã¿è¾¼ã
const buffer = new DataView(new ArrayBuffer(fileSize));
const readBuffer = accessHandle.read(buffer, { at: 0 });
// ã¡ãã»ã¼ã¸ããã¡ã¤ã«ã®çµç«¯ã«æ¸ãè¾¼ã
const encoder = new TextEncoder();
const encodedMessage = encoder.encode(message);
const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });
// 夿´ããã£ã¹ã¯ã«ä¿åãã
accessHandle.flush();
// å®äºãããããã¤ã FileSystemSyncAccessHandle ãéãã
accessHandle.close();
};
ã¡ã¢: 仿§æ¸ã®ä»¥åã®ãã¼ã¸ã§ã³ã§ã¯ãclose()
ã»flush()
ã»getSize()
ã»truncate()
ã¯èª¤ã£ã¦éåæã¡ã½ããã¨ããã¦ãã¾ãããããã¯ç¾å¨ã§ã¯ä¿®æ£ããã¦ãã¾ãããã¾ã éåæãã¼ã¸ã§ã³ããµãã¼ããã¦ãããã©ã¦ã¶ã¼ãããã¾ãã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4