브라우저에서 파일 작업을 하기 위한 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의 모든 메서드가 허용됩니다. 모든 인스턴스가 readwrite-unsafe 모드에 있는 한 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에서는 FileSystemAccessFileHandle.createWritable() 메서드에 다음 값을 가진 선택적 mode 매개변수를 추가합니다.

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

브라우저 지원

FileSystemSyncAccessHandle의 다중 리더 및 작성자와 FileSystemWritableFileStream의 배타적 작성자라는 두 가지 기능 모두 Chrome 121부터 지원됩니다.

개발자 체험판 시작

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

감사의 말씀

이 도움말은 다슬 리, 네이선 멤모트, 레이첼 앤드류가 검토했습니다.