/// /// /// /// import { createReadStream, createWriteStream, Dirent, Stats } from "fs"; import { Readable } from "stream"; import { FileSystem, WalkOptions } from "./fileSystem"; import { Pattern } from "./matcher"; /** 表示一个内存模拟的文件系统 */ export declare class MemoryFileSystem extends FileSystem { /** 判断当前文件系统是否是物理文件系统 */ get native(): boolean; /** 判断当前文件系统是否忽略大小写 */ readonly isCaseInsensitive = false; /** * 获取原始数据,键是绝对路径,值有三种类型: * - 字符串:表示文本文件内容 * - 缓存对象:表示二进制文件数据 * - null:表示一个文件夹 */ readonly data: Map; /** * 创建一个 IO 错误 * @param syscall 系统调用 * @param code 错误码 * @param errno 错误代码 * @param path 发送错误的路径 * @param message 错误的信息 */ protected createError(syscall: string, code: string, errno: number, path: string, message: string): NodeJS.ErrnoException; /** * 获取文件或文件夹的属性 * @param path 要获取的路径 * @param resolveLink 如果是软链接,是否解析链接引用的路径属性 */ getStat(path: string, resolveLink?: boolean): Promise; /** * 判断指定的路径是否存在 * @param path 要判断的路径 * @returns 如果路径不存在,则返回 `false`,否则返回 `true` */ exists(path: string): Promise; /** * 判断指定的文件是否存在 * @param path 要判断的路径 * @returns 如果文件不存在或路径不是一个文件,则返回 `false`,否则返回 `true` */ existsFile(path: string): Promise; /** * 判断指定的文件夹是否存在 * @param path 要判断的路径 * @returns 如果文件夹不存在或路径不是一个文件,则返回 `false`,否则返回 `true` */ existsDir(path: string): Promise; /** * 如果指定的路径不存在则直接返回,否则返回重命名后的新路径 * @param path 要测试的文件或文件夹路径 * @param append 如果路径已存在则添加的文件名后缀,其中的数字会递增直到文件不存在 */ ensureNotExists(path: string, append?: string): Promise; /** * 创建一个文件夹 * @param path 要创建的文件夹路径 */ createDir(path: string): Promise; /** * 创建一个临时文件夹 * @param parent 临时文件夹的根目录 * @returns 返回已创建文件夹路径 */ createTempDir(parent?: string): Promise; /** * 删除指定的文件夹 * @param path 要删除的文件夹路径 * @param recursive 是否删除所有所有子文件夹和文件,如果为 `false` 则只删除空文件夹 * @returns 返回删除的文件数 */ deleteDir(path: string, recursive?: boolean): Promise; /** * 清空指定的文件夹 * @param path 要清空的文件夹路径 * @returns 返回删除的文件数 */ cleanDir(path: string): Promise; /** * 如果路径所在的文件夹是空的则删除所在文件夹 * @param path 文件夹内的文件路径 * @returns 返回已删除的文件夹数,如果文件夹不空,返回 `0` */ deleteParentDirIfEmpty(path: string): Promise; /** * 删除指定的文件或软链接 * @param path 要删除的文件路径 * @returns 如果删除成功则返回 `true`,否则说明文件不存在,返回 `false` */ deleteFile(path: string): Promise; /** * 深度遍历指定的路径并执行回调 * @param path 要遍历的文件或文件夹路径 * @param options 遍历的选项 */ walk(path: string, options: WalkOptions): Promise; /** * 获取文件夹内的所有文件和文件夹组成的数组 * @param path 要读取的文件夹路径 * @param withFileTypes 是否包含文件类型信息 */ readDir(path: string, withFileTypes: true): Promise; /** * 获取文件夹内的所有文件和文件夹组成的数组 * @param path 要读取的文件夹路径 * @param withFileTypes 是否包含文件类型信息 */ readDir(path: string, withFileTypes?: boolean): Promise; /** * 读取指定文件的二进制内容 * @param path 要读取的文件路径 */ readFile(path: string): Promise; /** * 读取指定文件的文本内容 * @param path 要读取的文件路径 * @param encoding 文件的编码 */ readFile(path: string, encoding: BufferEncoding): Promise; /** * 将内容写入指定的文件 * @param path 要写入的文件路径 * @param data 要写入的文件数据 * @param overwrite 是否允许覆盖现有的目标 * @returns 如果写入成功则返回 `true`,否则说明目标已存在,返回 `false` */ writeFile(path: string, data: string | Buffer, overwrite?: boolean): Promise; /** * 在指定文件末尾追加内容 * @param path 要创建的文件路径 * @param data 要写入的文件数据 */ appendFile(path: string, data: string | Buffer): Promise; /** * 创建一个软链接 * @param path 要创建的文件路径 * @param target 要链接的目标路径 * @param overwrite 是否覆盖已有的目标 * @returns 如果创建成功则返回 `true`,否则说明目标已存在,返回 `false` */ createLink(path: string, target: string, overwrite?: boolean): Promise; /** * 读取软链接的实际地址 * @param path 要读取的软链接路径 */ readLink(path: string): Promise; /** * 创建一个用于读取指定文件的流 * @param path 要读取的文件路径 * @param options 附加选项 */ createReadStream(path: string, options?: Parameters[1]): { readonly path: string; readonly data?: string | Buffer | null; readonly bytesRead: number; readonly pending: boolean; _read(size: number): void; close(): void; readonly readableAborted: boolean; readable: boolean; readonly readableDidRead: boolean; readonly readableEncoding: BufferEncoding; readonly readableEnded: boolean; readonly readableFlowing: boolean; readonly readableHighWaterMark: number; readonly readableLength: number; readonly readableObjectMode: boolean; destroyed: boolean; _construct?(callback: (error?: Error) => void): void; read(size?: number): any; setEncoding(encoding: BufferEncoding): any; pause(): any; resume(): any; isPaused(): boolean; unpipe(destination?: NodeJS.WritableStream): any; unshift(chunk: any, encoding?: BufferEncoding): void; wrap(stream: NodeJS.ReadableStream): any; push(chunk: any, encoding?: BufferEncoding): boolean; _destroy(error: Error, callback: (error?: Error) => void): void; destroy(error?: Error): any; addListener(event: "close", listener: () => void): any; addListener(event: "data", listener: (chunk: any) => void): any; addListener(event: "end", listener: () => void): any; addListener(event: "error", listener: (err: Error) => void): any; addListener(event: "pause", listener: () => void): any; addListener(event: "readable", listener: () => void): any; addListener(event: "resume", listener: () => void): any; addListener(event: string | symbol, listener: (...args: any[]) => void): any; emit(event: "close"): boolean; emit(event: "data", chunk: any): boolean; emit(event: "end"): boolean; emit(event: "error", err: Error): boolean; emit(event: "pause"): boolean; emit(event: "readable"): boolean; emit(event: "resume"): boolean; emit(event: string | symbol, ...args: any[]): boolean; on(event: "close", listener: () => void): any; on(event: "data", listener: (chunk: any) => void): any; on(event: "end", listener: () => void): any; on(event: "error", listener: (err: Error) => void): any; on(event: "pause", listener: () => void): any; on(event: "readable", listener: () => void): any; on(event: "resume", listener: () => void): any; on(event: string | symbol, listener: (...args: any[]) => void): any; once(event: "close", listener: () => void): any; once(event: "data", listener: (chunk: any) => void): any; once(event: "end", listener: () => void): any; once(event: "error", listener: (err: Error) => void): any; once(event: "pause", listener: () => void): any; once(event: "readable", listener: () => void): any; once(event: "resume", listener: () => void): any; once(event: string | symbol, listener: (...args: any[]) => void): any; prependListener(event: "close", listener: () => void): any; prependListener(event: "data", listener: (chunk: any) => void): any; prependListener(event: "end", listener: () => void): any; prependListener(event: "error", listener: (err: Error) => void): any; prependListener(event: "pause", listener: () => void): any; prependListener(event: "readable", listener: () => void): any; prependListener(event: "resume", listener: () => void): any; prependListener(event: string | symbol, listener: (...args: any[]) => void): any; prependOnceListener(event: "close", listener: () => void): any; prependOnceListener(event: "data", listener: (chunk: any) => void): any; prependOnceListener(event: "end", listener: () => void): any; prependOnceListener(event: "error", listener: (err: Error) => void): any; prependOnceListener(event: "pause", listener: () => void): any; prependOnceListener(event: "readable", listener: () => void): any; prependOnceListener(event: "resume", listener: () => void): any; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): any; removeListener(event: "close", listener: () => void): any; removeListener(event: "data", listener: (chunk: any) => void): any; removeListener(event: "end", listener: () => void): any; removeListener(event: "error", listener: (err: Error) => void): any; removeListener(event: "pause", listener: () => void): any; removeListener(event: "readable", listener: () => void): any; removeListener(event: "resume", listener: () => void): any; removeListener(event: string | symbol, listener: (...args: any[]) => void): any; [Symbol.asyncIterator](): AsyncIterableIterator; pipe(destination: T, options?: { end?: boolean; }): T; off(eventName: string | symbol, listener: (...args: any[]) => void): any; removeAllListeners(event?: string | symbol): any; setMaxListeners(n: number): any; getMaxListeners(): number; listeners(eventName: string | symbol): Function[]; rawListeners(eventName: string | symbol): Function[]; listenerCount(eventName: string | symbol): number; eventNames(): (string | symbol)[]; }; /** * 创建一个用于写入指定文件的流 * @param path 要读取的文件路径 * @param options 附加选项 */ createWriteStream(path: string, options?: Parameters[1]): { readonly path: string; bytesWritten: number; error?: Error; readonly pending: boolean; _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): Promise; _final(callback: (error?: Error | null) => void): void; close(): any; readonly writable: boolean; readonly writableEnded: boolean; readonly writableFinished: boolean; readonly writableHighWaterMark: number; readonly writableLength: number; readonly writableObjectMode: boolean; readonly writableCorked: number; destroyed: boolean; _writev?(chunks: { chunk: any; encoding: BufferEncoding; }[], callback: (error?: Error) => void): void; _construct?(callback: (error?: Error) => void): void; _destroy(error: Error, callback: (error?: Error) => void): void; write(chunk: any, callback?: (error: Error) => void): boolean; write(chunk: any, encoding: BufferEncoding, callback?: (error: Error) => void): boolean; setDefaultEncoding(encoding: BufferEncoding): any; end(cb?: () => void): any; end(chunk: any, cb?: () => void): any; end(chunk: any, encoding: BufferEncoding, cb?: () => void): any; cork(): void; uncork(): void; destroy(error?: Error): any; addListener(event: "close", listener: () => void): any; addListener(event: "drain", listener: () => void): any; addListener(event: "error", listener: (err: Error) => void): any; addListener(event: "finish", listener: () => void): any; addListener(event: "pipe", listener: (src: Readable) => void): any; addListener(event: "unpipe", listener: (src: Readable) => void): any; addListener(event: string | symbol, listener: (...args: any[]) => void): any; emit(event: "close"): boolean; emit(event: "drain"): boolean; emit(event: "error", err: Error): boolean; emit(event: "finish"): boolean; emit(event: "pipe", src: Readable): boolean; emit(event: "unpipe", src: Readable): boolean; emit(event: string | symbol, ...args: any[]): boolean; on(event: "close", listener: () => void): any; on(event: "drain", listener: () => void): any; on(event: "error", listener: (err: Error) => void): any; on(event: "finish", listener: () => void): any; on(event: "pipe", listener: (src: Readable) => void): any; on(event: "unpipe", listener: (src: Readable) => void): any; on(event: string | symbol, listener: (...args: any[]) => void): any; once(event: "close", listener: () => void): any; once(event: "drain", listener: () => void): any; once(event: "error", listener: (err: Error) => void): any; once(event: "finish", listener: () => void): any; once(event: "pipe", listener: (src: Readable) => void): any; once(event: "unpipe", listener: (src: Readable) => void): any; once(event: string | symbol, listener: (...args: any[]) => void): any; prependListener(event: "close", listener: () => void): any; prependListener(event: "drain", listener: () => void): any; prependListener(event: "error", listener: (err: Error) => void): any; prependListener(event: "finish", listener: () => void): any; prependListener(event: "pipe", listener: (src: Readable) => void): any; prependListener(event: "unpipe", listener: (src: Readable) => void): any; prependListener(event: string | symbol, listener: (...args: any[]) => void): any; prependOnceListener(event: "close", listener: () => void): any; prependOnceListener(event: "drain", listener: () => void): any; prependOnceListener(event: "error", listener: (err: Error) => void): any; prependOnceListener(event: "finish", listener: () => void): any; prependOnceListener(event: "pipe", listener: (src: Readable) => void): any; prependOnceListener(event: "unpipe", listener: (src: Readable) => void): any; prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): any; removeListener(event: "close", listener: () => void): any; removeListener(event: "drain", listener: () => void): any; removeListener(event: "error", listener: (err: Error) => void): any; removeListener(event: "finish", listener: () => void): any; removeListener(event: "pipe", listener: (src: Readable) => void): any; removeListener(event: "unpipe", listener: (src: Readable) => void): any; removeListener(event: string | symbol, listener: (...args: any[]) => void): any; pipe(destination: T, options?: { end?: boolean; }): T; off(eventName: string | symbol, listener: (...args: any[]) => void): any; removeAllListeners(event?: string | symbol): any; setMaxListeners(n: number): any; getMaxListeners(): number; listeners(eventName: string | symbol): Function[]; rawListeners(eventName: string | symbol): Function[]; listenerCount(eventName: string | symbol): number; eventNames(): (string | symbol)[]; }; /** * 复制指定的文件夹 * @param src 要复制的源路径 * @param dest 要复制的目标路径 * @param overwrite 是否覆盖已有的目标 * @param preserveLinks 是否保留链接 * @param ignore 忽略的通配符 * @returns 返回已复制的文件数 */ copyDir(src: string, dest: string, overwrite?: boolean, preserveLinks?: boolean, ignore?: Pattern): Promise; /** * 复制指定的文件 * @param src 要复制的源路径 * @param dest 要复制的目标路径 * @param overwrite 是否覆盖已有的目标 * @returns 如果复制成功则返回 `true`,否则说明目标已存在,返回 `false` */ copyFile(src: string, dest: string, overwrite?: boolean): Promise; /** * 移动指定的文件夹 * @param src 要移动的源路径 * @param dest 要移动的目标路径 * @param overwrite 是否允许覆盖现有的目标 * @param preserveLinks 是否保留链接 * @returns 返回已移动的文件数 */ moveDir(src: string, dest: string, overwrite?: boolean, preserveLinks?: boolean): Promise; /** * 移动指定的文件 * @param src 要移动的源路径 * @param dest 要移动的目标路径 * @param overwrite 是否允许覆盖现有的目标 * @returns 如果移动成功则返回 `true`,否则说明目标已存在,返回 `false` */ moveFile(src: string, dest: string, overwrite?: boolean): Promise; /** * 获取指定路径区分大小写的实际路径,如果地址不存在则返回 `null` * @param path 原路径 */ getRealPath(path: string): Promise; }