Skip to main content

Ionic Filesystem

This plugin presents a simple and intuitive interface for common filesytem operations such as reading/writing and listing the contents of directories.

Installation#

If you have not already setup Ionic Enterprise in your app, follow the one-time setup steps.

Next, install the plugin:

npm install @ionic-enterprise/filesystemnpx cap sync

Usage#

The Filesystem plugin ship with a native Angular & es2015+/Typescript wrappers as well as being available on window.

// Angularimport { Filesystem } from '@ionic-enterprise/filesystem/ngx';import { Directories } from '@ionic-enterprise/filesystem';
...
constructor(private filesystem: Filesystem) { }
async statApplicationDirectory() {  const info = await this.filesystem.stat({path: '/', directory: Directories.Application});  console.log('Stat Info: ', info);}
...
// ES2015+/TypeScriptimport { Directories, Filesystem } from '@ionic-enterprise/filesystem';
Filesystem.stat({path: '/', directory: Directories.Application})  .then((info) => console.log('Stat Info: ',  info))  .catch((e) => console.log('Error occurred while doing stat: ', e));
...
// Vanilla JSdocument.addEventListener('deviceready', () => {  IonicFilesystem.stat({path: '/', directory: IonicFilesystem.Directories.Application})    .then((info) => console.log('Stat Info: ',  info))    .catch((e) => console.log('Error occurred while doing stat: ', e));});

API Documentation#

You can find the API and interface documentation for everything below. The main classes to pay attention to are:

  • Filesystem - This is the main API for interacting with the filesystem.
  • Directories - The available directory locations for the application.
  • Encodings - The available encodings when reading/writing a file.

Index#

Enumerations#

Classes#

Interfaces#


Enumerations#

Directories#

Directories:

The avaiable directories on the system

Application#

Application: = "APPLICATION"

The Application directory


Cache#

Cache: = "CACHE"

The Cache directory


Data#

Data: = "DATA"

The Data directory


Documents#

Documents: = "DOCUMENTS"

The Documents directory


External#

External: = "EXTERNAL"

The external directory (Android only)


ExternalStorage#

ExternalStorage: = "EXTERNAL_STORAGE"

The external storage directory (Android only)



Encodings#

Encodings:

The possible encoding types

ASCII#

ASCII: = "ascii"

ASCII encoding


UTF16#

UTF16: = "utf16"

UTF16 encoding


UTF8#

UTF8: = "utf8"

UTF8 encoding



Classes#

Filesystem#

Filesystem:

description: Provides API to read/write to the file sytems

usage:

// Angularimport { Filesystem } from '@ionic-enterprise/filesystem/ngx';import { Directories } from '@ionic-enterprise/filesystem';
...
constructor(private filesystem: Filesystem) { }
async statApplicationDirectory() { const info = await this.filesystem.stat({path: '/', directory: Directories.Application}); console.log('Stat Info: ', info);}
...
// ES2015+/TypeScriptimport { Directories, Filesystem } from '@ionic-enterprise/filesystem';
Filesystem.stat({path: '/', directory: Directories.Application}) .then((info) => console.log('Stat Info: ',  info)) .catch((e) => console.log('Error occurred while doing stat: ', e));
...
// Vanilla JSdocument.addEventListener('deviceready', () => { IonicFilesystem.stat({path: '/', directory: IonicFilesystem.Directories.Application})   .then((info) => console.log('Stat Info: ',  info))   .catch((e) => console.log('Error occurred while doing stat: ', e));});

Directories#

● Directories: Directories = Directories

The avaiable directories on the system


Encodings#

● Encodings: Encodings = Encodings

The possible encoding types


appendFile#

appendFile(options: FileWriteOptions): Promise<EmptyResult>

Append to a file on disk in the specified location on device

Parameters:

NameTypeDescription
optionsFileWriteOptionsoptions for the file append

Returns: Promise<EmptyResult> a promise that resolves with the file write result


deleteFile#

deleteFile(options: PathOptions): Promise<EmptyResult>

Delete a file from disk

Parameters:

NameTypeDescription
optionsPathOptionsoptions for the file delete

Returns: Promise<EmptyResult> a promise that resolves with the deleted file data result


getUri#

getUri(options: PathOptions): Promise<GetUriResult>

Return full File URI for a path and directory

Parameters:

NameTypeDescription
optionsPathOptionsthe options for the stat operation

Returns: Promise<GetUriResult> a promise that resolves with the file stat result


mkdir#

mkdir(options: MkdirOptions): Promise<EmptyResult>

Create a directory.

Parameters:

NameTypeDescription
optionsMkdirOptionsoptions for the mkdir

Returns: Promise<EmptyResult> a promise that resolves with the mkdir result


readFile#

readFile(options: FileReadOptions): Promise<FileReadResult>

Read a file from disk

Parameters:

NameTypeDescription
optionsFileReadOptionsoptions for the file read

Returns: Promise<FileReadResult> a promise that resolves with the read file data result


readdir#

readdir(options: PathOptions): Promise<ReaddirResult>

Return a list of files from the directory (not recursive)

Parameters:

NameTypeDescription
optionsPathOptionsthe options for the readdir operation

Returns: Promise<ReaddirResult> a promise that resolves with the readdir directory listing result


rmdir#

rmdir(options: PathOptions): Promise<EmptyResult>

Remove a directory

Parameters:

NameTypeDescription
optionsPathOptionsthe options for the directory remove

Returns: Promise<EmptyResult>


stat#

stat(options: PathOptions): Promise<StatResult>

Return data about a file

Parameters:

NameTypeDescription
optionsPathOptionsthe options for the stat operation

Returns: Promise<StatResult> a promise that resolves with the file stat result


writeFile#

writeFile(options: FileWriteOptions): Promise<EmptyResult>

Write a file to disk in the specified location on device

Parameters:

NameTypeDescription
optionsFileWriteOptionsoptions for the file write

Returns: Promise<EmptyResult> a promise that resolves with the file write result



Interfaces#

EmptyResult#

EmptyResult:


FileReadOptions#

FileReadOptions:

<Optional> directory#

● directory: Directories

The directory to start in


<Optional> encoding#

● encoding: Encodings

The encoding to read/write the file in, if not provided, data is read as binary and returned as base64 encoded data.

Pass Encodings.UTF8 to read data as string


path#

● path: string

The path to the file or directory with one of the Directories



FileReadResult#

FileReadResult:

data#

● data: string

The data in the file



FileWriteOptions#

FileWriteOptions:

data#

● data: string

The data to write


<Optional> directory#

● directory: Directories

The directory to start in


<Optional> encoding#

● encoding: Encodings

The encoding to write the file in


path#

● path: string

The path to the file or directory with one of the Directories



GetUriResult#

GetUriResult:

uri#

● uri: string



MkdirOptions#

MkdirOptions:

createIntermediateDirectories#

● createIntermediateDirectories: boolean

Whether to create any missing parent directories as well


<Optional> directory#

● directory: Directories

The directory to start in


path#

● path: string

The path to the file or directory with one of the Directories



PathOptions#

PathOptions:

<Optional> directory#

● directory: Directories

The directory to start in


path#

● path: string

The path to the file or directory with one of the Directories



ReaddirResult#

ReaddirResult:

files#

● files: string[]

the list of files in the directory



StatResult#

StatResult:

<Optional> ctime#

● ctime: undefined | number

The created time if available


mtime#

● mtime: number

The last modified time


size#

● size: number

The size of the item


type#

● type: "file" | "directory"

Whether the item is a file or a directory


uri#

● uri: string

The size of the item



Change Log#

[1.0.2] (2019-08-02)#

Bug Fixes#

  • iOS: Update iOS deleteFile method bug where deleteFile would actually make a directory.