Die Bangle.js verfügt über ein einfaches internes Dateisystem für Anwendungen und zugehörige Dateien mit folgenden Eigenschaften:
+xxx
enthält den Deskriptor für die Anwendung "xxx"*xxx
enthält ein Icon für die Anwendung "xxx"-xxx
enthält den Quelltext der Anwendung "xxx"=xxx
enthält Quelltext, der gleich nach einem Neustart laufen sollEine Liste aller Dateien auf einer angeschlossenen Uhr erhalten Sie von der IDE aus mittels
const Storage = require('Storage');
print('compacting internal Storage...');
Storage.compact();
print('internal Storage report:');
print('-',Storage.getFree(),'bytes free');
print('- list of stored files');
let FileList = Storage.list();
for (let i = 0, l = FileList.length; i < l; i++) {
print(' -',FileList[i].replace(/[\x00-\x1F\x7F-\x9F]/g, function (Match) {
let CharCode = Match.charCodeAt(0);
return '\\x' + (CharCode < 16 ? '0' : '') + CharCode.toString(16);
}));
}
print('done');
Das interne Dateisystem wird vom Emulator derzeit nicht unterstützt.
Die im oben gezeigten Beispiel auf den ersten Blick seltsam erscheinende replace
-Operation auf den gelieferten Dateinamen ist der Tatsache geschuldet, dass Bangle.js den Namen von Dateien variabler Länge am Ende ein Zeichen zur Kennung des jeweiligen Dateisegmentes anhängt, und dieses Zeichen auch nicht-druckbar sein kann.
Falls Sie nur an den Namen der "logischen" Dateien interessiert sind, ist folgendes Skript angebrachter:
const Storage = require('Storage');
print('compacting internal Storage...');
Storage.compact();
print('internal Storage report:');
print('-',Storage.getFree(),'bytes free');
print('- list of stored files');
let FileList = Storage.list();
let segmentedFileSet = Object.create(null);
for (let i = 0, l = FileList.length; i < l; i++) {
let FileName = FileList[i];
if (/\x01$/.test(FileName)) {
segmentedFileSet[FileName.replace(/.$/,'')] = true;
}
}
for (let i = FileList.length-1; i >= 0; i--) {
let FileName = FileList[i];
if (FileName.slice(0,FileName.length-1) in segmentedFileSet) {
FileList.splice(i,1);
}
}
for (let FileName in segmentedFileSet) {
FileList.push(FileName);
}
for (let i = 0, l = FileList.length; i < l; i++) {
print(' -',FileList[i].replace(/[\x00-\x1F\x7F-\x9F]/g, function (Match) {
let CharCode = Match.charCodeAt(0);
return '\\x' + (CharCode < 16 ? '0' : '') + CharCode.toString(16);
}));
}
print('done');