StorageManager A java library, to save and manage files in local storage, it can be used on all sort of java applications, since it was built based on Java.io package.
Contact: [email protected]
Linkedin: https://www.linkedin.com/in/abdel-wadoud/
The documentation can be found here:
https://github.com/rasmi-aw/StorageManager/wiki/StorageManager
A java library, to save and manage files in local storage, it can be used on all sort of java applications, since it was built based on Java.io package. This library is composed of several Java files.
This library can be used in many different ways, all versions are published on Maven Central, as all other libraries to use it you need to include its dependency in your code, the next steps give you a hint about that.
<dependency>
<groupId>com.beastwall</groupId>
<artifactId>storage-manager</artifactId>
<version>1.0.2</version>
</dependency>
implementation 'com.beastwall:storage-manager:1.0.2'
1.3 Other methods
For other usages (gradle kotlin, scala etc...), see the link below
https://search.maven.org/artifact/com.beastwall/storage-manager/1.0.2/jar
The main useful way this library can be used in, is to save files with other utils support, this will come as a question and response.
FileSaver class is used to save, inputstream or files, in a Synchronous or Asynchronous way, generally an object is instantiated using get() method, meanwhile the file saving operation is done using, save(...) or saveAsync(...) methods.
//Construct a saver instance
FileSaver saver = FileSaver.get();
Save a file
File pdfFile = new File(pdfUrl);
String pdf = saver.save(pdfFile, "pdffile.pdf");
Save an inputStream
InputStream inputStream = new FileInputStream(imgUrl);
String png = saver.save(inputStream, "image.png");
Save a file using its url
String zip = saver.save(zipUrl, "file.zip");
Copy a file into a specefic directory
String text = saver.save(new File(txtUrl), "StorageManager/demo/Demo/newdir", "file.txt");
Other saving methods can be found in FileSaver class
Some file saving tasks can take too much time, thus for the user needs some update on the current state of the operation, for example after performing an http call and get a file as a response, we need to show download progress to the user, and this can be done using ProgressCallback interface
String path = saver.setProgressCallBack(new ProgressCallback() {
@Override
public void progress(long totalBytes, long numberOfReadBytes, int percentage) {
System.out.println(percentage);
}
}).save(new File(txtUrl), "StorageManager/demo/Demo/newdir", "file1.txt");
or in lambda expression
saver
.setProgressCallBack((totalBytes, numberOfReadBytes, percentage) -> {})
.save(new File(txtUrl), "StorageManager/demo/Demo/newdir", "file.txt");
The total number of bytes (File size) is extracted from "inputsteam.available()" method, then to change te expected number of bytes to be read, to get a more accurate progress calculation you can use setInputLength() method to specify the totalBytes number
saver.setInputLength(textFile.length())
.save(textFile, "StorageManager/demo/Demo/newdir", "file2.txt");
Save a file asynchronously in a separate thread (meant for performance)
saver.saveAsync(zipUrl, "fileAsync.zip", new FileSavedCall() {
@Override
public void result(boolean success, String file) {
String zip = file;
}
});
Sometimes a file needs a random name with extension to be saved, StorageUtils class provides some needed utils that could help you to manage your files
String fileName = StorageUtils.randomNameWithExtension("any-prefix", MimeType.APPLICATION_JSON);
A lot of other features an be found in StorageUtils.
All the set methods return the FileSaver instance, so for a better code appearance you might want to use this short expression.
FileSaver
.get()
.setProgressCallBack(...)
.setInputLength(...)
.save(...);
To see real examples you can download demo project from the link below
https://github.com/rasmi-aw/StorageManager/tree/master/demo/Demo