OmniFile is a thin virtualization layer that adds functionality to the standard Java file input output classes. It was developed out of necessity to support elFinder, a web based file manager, IOCipher, an encrypted virtual file system, and Lucene, a high-end search engine. OmniFile is written in Java and supported on Android, Mac OSX and Linux. The term “virtualization” is used because OmniFile can be used to implemented multiple file systems within a filesystem.
An OmniFile is an object constructed using a volume ID and a path. A volume ID identifies where the root of a virtual filesystem is located anywhere on a computer or network, making it a virtual component. A path works in conjunction with a volume ID to define the location of a file or directory and can either be clear text or base64 encoded. Base64 encoding allows OmniFile files to be used in conjunction with RESTful services and common web browsers.
The volume ID can be used to sandbox files to a specific folder or area in a file storage system. This is ideal when the user has a file browser that is limited to a private file system. The user cannot browse and edit the entire private file system, only a designated portion of it.
On Android a volume ID can be configured for any combination of:
- A public SDCARD area
- A private application file area
- A private and IOCipher encrypted file area
- A public and IOCipher encrypted file area
- A network volume, either encrypted or clear text
OmniFile supports file transactions between all volume ID types, copy clear files to encrypted files, to private files, to public files, in any combination.
An OmniFile path has the following features:
- The path element can be base64 encoded, making it ideal for communications or inclusion in URLs. Other encodings are possible.
- A hashed path can be combined with a volume ID to make a complete file reference.
The main OmniFile classes are as follows:
- OmniFile, analogous to java.io.File, file constructor, and basic file operations
- OmniFiles, analogous to java.io.Files, copy files, folders, and streaming
- OmniFileFilter, utilities for searching and filtering files in a filesystem
- OmniImage, basic image and image thumbnail management
- OmniUtil, utility methods for working with file paths, directories, and JSON
- OmniZip, support for zipping and unzipping files and filesystems
An added benefit of OmniFile is clean coding. IOCipher requires the use of custom java.io classes used for filesystem encryption. OmniFile provides a thin layer between file operations and the programmer. Files can be created and manipulated without having to deal with the issues of mixing incompatible Java classes.
Contact us for help with the design, development, integration and testing of your security application.