Baseline 2023
Newly available
å®å ¨ãªã³ã³ããã¹ãç¨: ãã®æ©è½ã¯ä¸é¨ã¾ãã¯ãã¹ã¦ã®å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã«ããã¦ãå®å ¨ãªã³ã³ããã¹ã (HTTPS) ã§ã®ã¿å©ç¨ã§ãã¾ãã
File System Access API
ã® FileSystemDirectoryHandle
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ããã¡ã¤ã«ã·ã¹ãã ã®ãã£ã¬ã¯ããªã¼ã¸ã®ãã³ãã«ãæä¾ãã¾ãã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ãã¡ã½ãã window.showDirectoryPicker()
ã»StorageManager.getDirectory()
ã»DataTransferItem.getAsFileSystemHandle()
ã»FileSystemDirectoryHandle.getDirectoryHandle()
ããã¢ã¯ã»ã¹å¯è½ã§ãã
親㮠FileSystemHandle
ããããããã£ãç¶æ¿ãã¾ãã
親㮠FileSystemHandle
ããã¡ã½ãããç¶æ¿ãã¾ãã
FileSystemDirectoryHandle.entries()
ãªãã¸ã§ã¯ãèªèº«ã®åæå¯è½ãªããããã£ã® [key, value]
ãã¢ã®æ°ãã éåæã¤ãã¬ã¼ã¿ã¼ ãè¿ãã¾ãã
FileSystemDirectoryHandle.getFileHandle()
ã¡ã½ãããå¼ã°ãããã£ã¬ã¯ããªã¼å
ã®æå®ã®ååã®ãã¡ã¤ã«ã表ã FileSystemFileHandle
ã§è§£æ±ºãã Promise
ãè¿ãã¾ãã
FileSystemDirectoryHandle.getDirectoryHandle()
ã¡ã½ãããå¼ã°ãããã£ã¬ã¯ããªã¼å
ã®æå®ã®ååã®ãµããã£ã¬ã¯ããªã¼ã表ã FileSystemDirectoryHandle
ã§è§£æ±ºããã Promise
ãè¿ãã¾ãã
FileSystemDirectoryHandle.keys()
FileSystemDirectoryHandle
å
ã®åã¢ã¤ãã ã®ãã¼ãå«ãæ°ãã éåæã¤ãã¬ã¼ã¿ã¼ ãè¿ãã¾ãã
FileSystemDirectoryHandle.removeEntry()
ãã£ã¬ã¯ããªã¼ãã³ãã«ã«æå®ã®ååã®ãã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªã¼ãããå ´åãéåæã§ã¨ã³ããªã¼ãåé¤ãããã¨ãã¾ãã
FileSystemDirectoryHandle.resolve()
親ãã³ãã«ããæå®ã®åã¨ã³ããªã¼ã¸ã®ãã£ã¬ã¯ããªã¼åã® Array
(æå¾ã®è¦ç´ ã¯æå®ããåã¨ã³ããªã¼ã®åå) ã§è§£æ±ºãã Promise
ãè¿ãã¾ãã
FileSystemDirectoryHandle.values()
FileSystemDirectoryHandle
å
ã®åã¤ã³ããã¯ã¹ã«å¯¾å¿ããå¤ãå«ãæ°ãã éåæã¤ãã¬ã¼ã¿ã¼ ãè¿ãã¾ãã
FileSystemDirectoryHandle[Symbol.asyncIterator]()
ããã©ã«ãã§ã¯ entries
颿°ãè¿ãã¾ãã
以ä¸ã®ä¾ã§ã¯ãæå®ã®ååã®ãã£ã¬ã¯ããªã¼ãã³ãã«ãè¿ãã¾ããæå®ãããã£ã¬ã¯ããªã¼ãåå¨ããªãå ´åã¯ã使ããã¾ãã
const dirName = "directoryToGetName";
// ãã£ã¬ã¯ããªã¼ãã³ãã« 'currentDirHandle' ãããã¨ä»®å®
const subDir = currentDirHandle.getDirectoryHandle(dirName, { create: true });
以ä¸ã®éåæé¢æ°ã¯ãresolve()
ãç¨ãã¦ã鏿ããããã¡ã¤ã«ã®æå®ã®ãã£ã¬ã¯ããªã¼ãã³ãã«ãåºæºã¨ããç¸å¯¾ãã¹ãåå¾ãã¾ãã
async function returnPathDirectories(directoryHandle) {
// ãã¡ã¤ã«ããã«ã¼ãéãã¦ãã¡ã¤ã«ãã³ãã«ãå¾ã
const handle = await self.showOpenFilePicker();
if (!handle) {
// ã¦ã¼ã¶ã¼ããã£ã³ã»ã«ãããããã¡ã¤ã«ãéãã®ã«å¤±æãã
return;
}
// ãã³ãã«ããã£ã¬ã¯ããªã¼ãã³ãã«ã表ããã£ã¬ã¯ããªã¼å
ã«ãããã確èªãã
const relativePaths = await directoryHandle.resolve(handle);
if (relativePath === null) {
// ãã£ã¬ã¯ããªã¼ãã³ãã«å
ã«ãªã
} else {
// relativePath ã¯ç¸å¯¾ãã¹ã表ãååã®é
å
for (const name of relativePaths) {
// åã¨ã³ããªã¼ãè¨é²ãã
console.log(name);
}
}
}
以ä¸ã®ä¾ã§ã¯ããã£ã¬ã¯ããªã¼ãå帰çã«èµ°æ»ãããã£ã¬ã¯ããªã¼å
ã®åãã¡ã¤ã«ã表ã FileSystemFileHandle
ãªãã¸ã§ã¯ããè¿ãã¾ãã
async function* getFilesRecursively(entry) {
if (entry.kind === "file") {
const file = await entry.getFile();
if (file !== null) {
file.relativePath = getRelativePath(entry);
yield file;
}
} else if (entry.kind === "directory") {
for await (const handle of entry.values()) {
yield* getFilesRecursively(handle);
}
}
}
for await (const fileHandle of getFilesRecursively(directoryHandle)) {
console.log(fileHandle);
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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