--- 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 } ```