UNPKG

expo-file-system

Version:

Provides access to the local file system on the device.

310 lines 12.7 kB
import type { SharedObject } from 'expo-modules-core'; import type { Directory as PublicDirectory } from '../Directory'; import type { DirectoryCreateOptions, DirectoryInfo } from '../Directory.types'; import type { File as PublicFile } from '../File'; import type { FileCreateOptions, FileHandle, FileInfo, FileMode, FileWriteOptions, InfoOptions, PickMultipleFilesOptions, PickMultipleFilesResult, PickSingleFileOptions, PickSingleFileResult, RelocationOptions } from '../File.types'; import type { WatchEvent, WatchEventType, WatchOptions, WatchSubscription } from '../FileSystemWatcher.types'; import type { DownloadTask, UploadTask } from '../NetworkTasks'; import type { DownloadOptions, DownloadProgress, DownloadTaskOptions, UploadOptions, UploadProgress, UploadResult } from '../NetworkTasks.types'; export declare class NativeFileSystemDirectory { /** * Creates an instance of a directory. * @param uris An array of: `file:///` string URIs, `File` instances, `Directory` instances representing an arbitrary location on the file system. The location does not need to exist, or it may already contain a file. * @example * ```ts * const directory = new Directory("file:///path/to/directory"); * ``` */ constructor(...uris: (string | PublicFile | PublicDirectory)[]); /** * Represents the directory URI. The field is read-only, but it may change as a result of calling some methods such as `move`. */ readonly uri: string; /** * Validates a directory path. * @hidden This method is not meant to be used directly. It is called by the JS constructor. */ validatePath(): void; /** * Deletes a directory. Also deletes all files and directories inside the directory. * * @throws Error if the directory does not exist or cannot be deleted. */ delete(): void; /** * A boolean representing if a directory exists and can be accessed. */ exists: boolean; /** * Creates a directory that the current uri points to. * * @throws Error if the containing folder doesn't exist, the application has no read access to it or the directory (or a file with the same path) already exists (unless `idempotent` is `true`). */ create(options?: DirectoryCreateOptions): void; createFile(name: string, mimeType: string | null): PublicFile; createDirectory(name: string): PublicDirectory; /** * Watches this directory for changes to its contents. */ watch(callback: (event: WatchEvent<PublicFile | PublicDirectory>) => void, options?: WatchOptions): WatchSubscription; /** * Copies a directory. */ copy(destination: PublicDirectory | PublicFile, options?: RelocationOptions): Promise<void>; /** * Copies a directory synchronously. */ copySync(destination: PublicDirectory | PublicFile, options?: RelocationOptions): void; /** * Moves a directory. Updates the `uri` property that now points to the new location. */ move(destination: PublicDirectory | PublicFile, options?: RelocationOptions): Promise<void>; /** * Moves a directory synchronously. Updates the `uri` property that now points to the new location. */ moveSync(destination: PublicDirectory | PublicFile, options?: RelocationOptions): void; /** * Renames a directory. */ rename(newName: string): void; /** * @hidden * Lists the contents of a directory. Should not be used directly, as it returns a list of paths. * This function is internal and will be removed in the future (when returning arrays of shared objects is supported). */ listAsRecords(): { isDirectory: boolean; uri: string; }[]; /** * Lists the contents of a directory. */ list(): (PublicDirectory | PublicFile)[]; /** * Retrieves an object containing properties of a directory. * * @throws Error If the application does not have read access to the directory, or if the path does not point to a directory (e.g., it points to a file). * * @returns An object with directory metadata (for example, size, creation date, and so on). */ info(): DirectoryInfo; /** * A size of the directory in bytes. Null if the directory does not exist, or it cannot be read. */ size: number | null; /** * A static method that opens a file picker to select a directory. * * On iOS, the selected directory grants temporary read and write access for the current app session only. After the app restarts, you must prompt the user again to regain access. * * @param initialUri An optional uri pointing to an initial folder on which the directory picker is opened. * @returns a `Directory` instance. On Android, the underlying uri will be a content URI. */ static pickDirectoryAsync(initialUri?: string): Promise<PublicDirectory>; } export declare class NativeFileSystemFile { /** * Creates an instance of File. * * @param uris A `file:///` URI representing an arbitrary location on the file system. The location does not need to exist, or it may already contain a directory. */ constructor(...uris: (string | PublicFile | PublicDirectory)[]); /** * Represents the file URI. The field is read-only, but it may change as a result of calling some methods such as `move`. */ get uri(): string; /** * @hidden This method is not meant to be used directly. It is called by the JS constructor. * Validates a directory path. */ validatePath(): void; /** * Retrieves text from the file. * @returns A promise that resolves to the contents of the file as string. */ text(): Promise<string>; /** * Retrieves text from the file. * @returns The contents of the file as string. */ textSync(): string; /** * Retrieves content of the file as base64. * @returns A promise that resolves to the contents of the file as a base64 string. */ base64(): Promise<string>; /** * Retrieves content of the file as base64. * @returns The contents of the file as a base64 string. */ base64Sync(): string; /** * Retrieves byte content of the entire file. * @returns A promise that resolves to the contents of the file as a `Uint8Array`. */ bytes(): Promise<Uint8Array<ArrayBuffer>>; /** * Retrieves byte content of the entire file. * @returns The contents of the file as a `Uint8Array`. */ bytesSync(): Uint8Array; /** * Writes content to the file. * @param content The content to write into the file. */ write(content: string | Uint8Array, options?: FileWriteOptions): void; /** * Deletes a file. * * @throws Error if the directory does not exist or cannot be deleted. */ delete(): void; /** * Retrieves an object containing properties of a file * @throws Error If the application does not have read access to the file, or if the path does not point to a file (for example, it points to a directory). * @returns An object with file metadata (for example, size, creation date, and so on). */ info(options?: InfoOptions): FileInfo; /** * A boolean representing if a file exists. `true` if the file exists, `false` otherwise. * Also, `false` if the application does not have read access to the file. */ exists: boolean; /** * Creates a file. * * @throws Error if the containing folder doesn't exist, the application has no read access to it or the file (or directory with the same path) already exists. */ create(options?: FileCreateOptions): void; /** * Copies a file. */ copy(destination: PublicDirectory | PublicFile, options?: RelocationOptions): Promise<void>; /** * Copies a file synchronously. */ copySync(destination: PublicDirectory | PublicFile, options?: RelocationOptions): void; /** * Moves a directory. Updates the `uri` property that now points to the new location. */ move(destination: PublicDirectory | PublicFile, options?: RelocationOptions): Promise<void>; /** * Moves a file synchronously. Updates the `uri` property that now points to the new location. */ moveSync(destination: PublicDirectory | PublicFile, options?: RelocationOptions): void; /** * Renames a file. */ rename(newName: string): void; /** * Returns A `FileHandle` object that can be used to read and write data to the file. * * @param mode - The {@link FileMode} to use. * - On **Android**, SAF `content://` URIs do not support `ReadWrite` mode. * - **Defaults**: * - For SAF `content://` URIs, the default is `FileMode.ReadOnly`. * - For standard `file://` URIs, the default is `FileMode.ReadWrite`. * * @throws Error if the file does not exist or cannot be opened. */ open(mode?: FileMode): FileHandle; upload(url: string, options?: UploadOptions): Promise<UploadResult>; createUploadTask(url: string, options?: UploadOptions): UploadTask; watch(callback: (event: WatchEvent<PublicFile>) => void, options?: WatchOptions): WatchSubscription; static downloadFileAsync(url: string, destination: PublicDirectory | PublicFile, options?: DownloadOptions): Promise<PublicFile>; static pickFileAsync(options?: PickSingleFileOptions): Promise<PickSingleFileResult>; static pickFileAsync(options?: PickMultipleFilesOptions): Promise<PickMultipleFilesResult>; static pickFileAsync(initialUri?: string, mimeType?: string): Promise<PublicFile | PublicFile[]>; static createDownloadTask(url: string, destination: PublicDirectory | PublicFile, options?: DownloadTaskOptions): DownloadTask; /** * A size of the file in bytes. 0 if the file does not exist, or it cannot be read. */ size: number; /** * A md5 hash of the file. Null if the file does not exist, or it cannot be read. */ md5: string | null; /** * A last modification time of the file expressed in milliseconds since the epoch. Returns a `null` if the file does not exist, or if it cannot be read. * @deprecated In favor of `lastModified` to be more in line with web [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) */ modificationTime: number | null; /** * A last modification time of the file expressed in milliseconds since the epoch. Returns a `null` if the file does not exist, or if it cannot be read. */ lastModified: number | null; /** * A creation time of the file expressed in milliseconds since the epoch. Returns a `null` if the file does not exist, cannot be read or the Android version is earlier than API 26. */ creationTime: number | null; /** * A mime type of the file. An empty string if the file does not exist, or it cannot be read. */ type: string; /** * A content URI to the file that can be shared to external applications. * @platform android */ contentUri: string; } type UploadTaskEvents = { progress: (data: UploadProgress) => void; }; type DownloadTaskEvents = { progress: (data: DownloadProgress) => void; }; /** * @hidden */ export declare class FileSystemUploadTask extends SharedObject<UploadTaskEvents> { /** * @hidden */ start(url: string, file: PublicFile, options: Record<string, any>): Promise<UploadResult>; /** * @hidden */ cancel(): void; } /** * @hidden */ export declare class FileSystemDownloadTask extends SharedObject<DownloadTaskEvents> { /** * @hidden */ start(url: string, to: PublicFile | PublicDirectory, options?: Record<string, any>): Promise<string | null>; /** * @hidden */ pause(): any; /** * @hidden */ resume(url: string, to: PublicFile | PublicDirectory, resumeData: string, options?: Record<string, any>): Promise<string | null>; /** * @hidden */ cancel(): void; } export type NativeFileSystemWatcherEvent = { type: WatchEventType; path: string; isDirectory: boolean; nativeEventFlags?: number; newPath?: string; newPathIsDirectory?: boolean; }; type FileSystemWatcherEvents = { change: (event: NativeFileSystemWatcherEvent) => void; }; /** * @hidden */ export declare class NativeFileSystemWatcher extends SharedObject<FileSystemWatcherEvents> { constructor(path: string, options?: WatchOptions); start(): void; stop(): void; } export {}; //# sourceMappingURL=NativeFileSystem.types.d.ts.map