I am looking into using the device storage space as part of an existing app, so I am investigating the capabilities of various devices. I have a bunch of devices that I can test on and I have written a simple bit of code that lists the roots available and the space available on each:
Code:
Enumeration enumeration = FileSystemRegistry.listRoots();
while (enumeration.hasMoreElements()) {
String root = (String) enumeration.nextElement();
Logger.forceLog("Root: " + root);
FileConnection fc = (FileConnection) Connector.open("file:///" + root);
Logger.forceLog("Size: " + fc.availableSize());
}
On the blackberry 9000 there were 3 roots: system/, store/ and SDCard/. I guess this is because it is the only device (I think) that has a large internal media memory? (system/ reported 25MB free, store/ ~900MB free and SDCard/ ~1GB free).
All other devices I have tried it on show SDCard/ and store/, so store/ refers to the Device Memory in this case, compared with system/ for the 9000. When I check in options->Memory I see 'Application Memory, Free Space' and this value is always more than the value given by fc.availableSize() for the root called 'store/'. Is this normal? Are they referring to different things?
In some cases there is not much of a difference, options reports 35MB, my log says 25MB. But in other cases the options menu reports 128MB free, but my log shows only 4MB free, so I am wondering what each of these values is actually referring to? Why does a totally fresh, vanilla device (8520 in this case) only have 4MB of free space?
I am basically trying to work out what assumptions I can make about devices and file system usage. Is it fair to say that if an SDCard is not present in a device that I should not rely on using the internal memory, because on some devices this might only provide a couple of megabytes?