--- category: Browser --- # useFileSystemAccess Create and read and write local files with [FileSystemAccessAPI](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) ## Usage ```ts import { useFileSystemAccess } from '@vueuse/core'; const { isSupported, data, file, fileName, fileMIME, fileSize, fileLastModified, create, open, save, saveAs, updateData, } = useFileSystemAccess(); ``` ## Type Declarations ```ts /** * window.showOpenFilePicker parameters * @see https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker#parameters */ export interface FileSystemAccessShowOpenFileOptions { multiple?: boolean; types?: Array<{ description?: string; accept: Record; }>; excludeAcceptAllOption?: boolean; } /** * window.showSaveFilePicker parameters * @see https://developer.mozilla.org/en-US/docs/Web/API/window/showSaveFilePicker#parameters */ export interface FileSystemAccessShowSaveFileOptions { suggestedName?: string; types?: Array<{ description?: string; accept: Record; }>; excludeAcceptAllOption?: boolean; } /** * FileHandle * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle */ export interface FileSystemFileHandle { getFile: () => Promise; createWritable: () => FileSystemWritableFileStream; } /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream */ interface FileSystemWritableFileStream extends WritableStream { /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ write: FileSystemWritableFileStreamWrite; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/seek */ seek: (position: number) => Promise; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/truncate */ truncate: (size: number) => Promise; } /** * FileStream.write * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ interface FileSystemWritableFileStreamWrite { (data: string | BufferSource | Blob): Promise; (options: { type: 'write'; position: number; data: string | BufferSource | Blob }): Promise; (options: { type: 'seek'; position: number }): Promise; (options: { type: 'truncate'; size: number }): Promise; } /** * FileStream.write * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ export type FileSystemAccessWindow = Window & { showSaveFilePicker: ( options: FileSystemAccessShowSaveFileOptions, ) => Promise; showOpenFilePicker: ( options: FileSystemAccessShowOpenFileOptions, ) => Promise; }; export type UseFileSystemAccessCommonOptions = Pick< FileSystemAccessShowOpenFileOptions, 'types' | 'excludeAcceptAllOption' >; export type UseFileSystemAccessShowSaveFileOptions = Pick< FileSystemAccessShowSaveFileOptions, 'suggestedName' >; export type UseFileSystemAccessOptions = ConfigurableWindow & UseFileSystemAccessCommonOptions & { /** * file data type */ dataType?: MaybeRefOrGetter<'Text' | 'ArrayBuffer' | 'Blob'>; }; /** * Create and read and write local files. * @see https://vueuse.org/useFileSystemAccess */ export declare function useFileSystemAccess(): UseFileSystemAccessReturn< string | ArrayBuffer | Blob >; export declare function useFileSystemAccess( options: UseFileSystemAccessOptions & { dataType: 'Text'; }, ): UseFileSystemAccessReturn; export declare function useFileSystemAccess( options: UseFileSystemAccessOptions & { dataType: 'ArrayBuffer'; }, ): UseFileSystemAccessReturn; export declare function useFileSystemAccess( options: UseFileSystemAccessOptions & { dataType: 'Blob'; }, ): UseFileSystemAccessReturn; export declare function useFileSystemAccess( options: UseFileSystemAccessOptions, ): UseFileSystemAccessReturn; export interface UseFileSystemAccessReturn { isSupported: ComputedRef; data: ShallowRef; file: ShallowRef; fileName: ComputedRef; fileMIME: ComputedRef; fileSize: ComputedRef; fileLastModified: ComputedRef; open: (_options?: UseFileSystemAccessCommonOptions) => Awaitable; create: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; save: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; saveAs: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; updateData: () => Awaitable; } ```