브라우저에서 파일 작업을 하기 위한 API 개선

FileSystemSyncAccessHandle을 위한 여러 판독기 및 작성기와 FileSystemWritableFileStream을 위한 전용 작성기를 지원합니다.

토마스 슈타이너
토마스 슈타이너

FileSystemSyncAccessHandle을 위한 다중 판독기 및 작성기

개발자는 원본 비공개 파일 시스템 (버킷 파일 시스템이라고도 함)을 사용하여 최대 읽기 및 쓰기 성능에 최적화된 파일에 액세스할 수 있습니다. 이 작업은 FileSystemSyncAccessHandle 객체를 통해 실행됩니다. 현재 동일한 파일 항목의 여러 FileSystemSyncAccessHandle 객체를 열려고 하면 NoModificationAllowedError이 표시되며 실패합니다. 이 제약 조건이 제한적인 사용 사례가 있으므로 Chrome 121에서는 허용되는 문자열 값을 사용하여 FileSystemFileHandle.createSyncAccessHandle() 메서드의 새로운 mode 매개변수를 도입합니다.

  • "readwrite": 현재 기본값입니다. 파일이 열리면 FileSystemSyncAccessHandle의 모든 메서드가 허용됩니다. FileSystemSyncAccessHandle 인스턴스는 하나만 허용됩니다.
  • "read-only" : 여러 리더를 사용할 수 있습니다. 파일이 열리면 FileSystemSyncAccessHandle에서 읽기와 유사한 메서드(read(), getSize(), close())만 허용됩니다. 모두 읽기 전용 모드인 경우 FileSystemSyncAccessHandle의 여러 인스턴스를 만들 수 있습니다.
  • "readwrite-unsafe": 여러 작성자를 허용합니다. 파일이 열리면 FileSystemSyncAccessHandle의 모든 메서드가 허용됩니다. 모든 FileSystemSyncAccessHandle 인스턴스가 읽기 쓰기 안전 모드인 경우 여러 인스턴스를 만들 수 있습니다.

현재 동작은 "readwrite" 옵션을 기본값으로 유지하여 유지되어 한 번에 하나의 인스턴스만 허용됩니다. 사이트에서 여러 FileSystemSyncAccessHandle 객체를 열어야 하지만 쓰기를 실행할 필요는 없는 경우 "read-only" 옵션을 사용해야 합니다. 마지막으로 마지막 옵션인 "readwrite-unsafe"는 읽기 및 쓰기뿐만 아니라 여러 인스턴스도 허용합니다. 이 경우 여러 탭에서 수행되면 쓰기가 선정적일 수 있으며 사이트는 자체 잠금 스키마를 제공해야 합니다.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

FileSystemWritableFileStream 전용 작성기

FileSystemSyncAccessHandle와 달리 현재는 파일 항목당 FileSystemWritableFileStream의 여러 인스턴스를 만들 수 있습니다. 독점 작가에게 옵션을 제공할 방법은 없습니다. Chrome 121에서는 다음 값을 포함하는 mode 매개변수를 FileSystemAccessFileHandle.createWritable() 메서드에 추가합니다(선택사항).

  • "exclusive" 모드: 한 번에 하나의 작성자만 존재할 수 있습니다.
  • "siloed" 모드: 현재 기본값입니다. 생성된 각 작성기에는 자체 스왑 파일이 있습니다.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

브라우저 지원

Chrome 121부터 FileSystemSyncAccessHandle의 다중 리더 및 작가 및 FileSystemWritableFileStream의 독점 작가와 같은 두 기능이 모두 지원됩니다.

개발자 체험판 시작

Chrome 121이 출시되기 전에 개발자 체험판에 들어가 기능을 테스트하려면 chrome://flags#file-system-access-locking-scheme 플래그를 사용 설정됨으로 설정하세요. 이렇게 하면 머신에서 로컬로 기능을 테스트할 수 있습니다.

감사의 말씀

이다슬, 네이선 멤모트, 레이첼 앤드류가 작성한 도움말입니다.