Create, read, delete, append, encrypt files and more, on internal or external disk spaces with a really simple API
Switch branches/tags
Nothing to show
Clone or download
Latest commit 37134be Apr 3, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Open file in default app Jul 20, 2017
assets update preview Jul 1, 2017
gradle/wrapper updated gradle version May 22, 2017
storage bump to 2.1.0 Jun 30, 2017
.gitignore fixed gitignore May 23, 2017 Added changlog Jul 1, 2017
LICENSE Initial commit Dec 27, 2013 Update Apr 2, 2018
build.gradle fixed gradle files May 23, 2017 Update structure Dec 27, 2015
gradlew Update structure Dec 27, 2015
gradlew.bat Update structure Dec 27, 2015
settings.gradle update lib name Jun 26, 2017


Library to create, read, delete, append, encrypt files and more, on internal or external disk spaces with a really simple API.

Latest Release


dependencies {
    compile 'com.snatik:storage:2.1.0'

Don't forget to update AndroidManifest.xml and add next line:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


// init
Storage storage = new Storage(getApplicationContext());

// get external storage
String path = storage.getExternalStorageDirectory();

// new dir
String newDir = path + File.separator + "My Sample Directory";

Check all options, scroll down ;)

Sample app

The app has some simple UI screens and uses the storage library. This is just an example of what can be done with this lib.



Storage storage = new Storage(getApplicationContext());

Work on External Storage.

  • Check if external writable

     boolean isWritable = storage.isExternalWritable();
  • Root external storage path

     String path = storage.getExternalStorageDirectory();
  • If you want to use a particular public directory

    Storage storage = SimpleStorage.getExternalStorage(Environment.DIRECTORY_PICTURES);

Work on Internal Storage.

  • Directory for storing app internal files (documentation):

     String path = SimpleStorage.getInternalFilesDirectory();
  • Cache dir

     String path = SimpleStorage.getInternalCacheDirectory();
  • Root internal storage dir

     String path = SimpleStorage.getInternalRootDirectory();

Create directory

  • Create directory

  • Create directory and override the existing one.

     storage.createDirectory(path, true);

Create file

Create a new file with the content in it.

storage.createFile(path, "some content of the file");

The content of the file can be one of the next types:

  • String
  • byte[]
  • Bitmap
  • Storable

Read file

Read the content of any file to byte array.

byte[] bytes = storage.readFile(path);

Read the content of the file to String.

String content = storage.readTextFile(path);

Append content to file

storage.appendFile(path, "more new data");

You can append:

  • String
  • byte[]


storage.copy(fromPath, toPath);


storage.move(fromPath, toPath);

Delete directory


Delete file


Get files

  • Get files in ordered way by: name, date, size

     List<File> files = storage.getFiles(path, OrderType.DATE);
  • Get files and filter by regular expression:

     String regex = ...;
     List<File> files = storage.getFiles(path, regex);
  • Get all nested files (without the directories)
     List<File> files = storage.getNestedFiles(path);


  • Is directory exists

     boolean dirExists = storage.isDirectoryExists(path);
  • Is file exists

     boolean fileExists = storage.isFileExist(path);

Security configuration

You can write and read files while the content is encrypted. It means, that no one can read the data of your files from external or internal storage.

You will continue using the same api as before. The only thing you need to do is to configure the Simple Storage library before the you want to create/read encrypted data.

// set encryption
String IVX = "abcdefghijklmnop"; // 16 lenght - not secret
String SECRET_KEY = "secret1234567890"; // 16 lenght - secret
byte[] SALT = "0000111100001111".getBytes(); // random 16 bytes array

// build configuratio
EncryptConfiguration configuration = new EncryptConfiguration.Builder()
	.setEncryptContent(IVX, SECRET_KEY, SALT)
// configure the simple storage

Now, you can create a new file with content and the content will be automatically encrypted.
You can read the file and the content will be decrypted.


Create file with next content "this is the secret data":

storage.createFile(path, "this is the secret data");

If we open the file to see it's content then it we will something like this: „f°α�ΤG†_i�ΐp . It looks good :)

And now, read the file data with the same api:

String content = storage.readTextFile(path);

You will see that the content will be: "this is the secret data".


Just play and check the sample app ;)