-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFileSystem.js
78 lines (78 loc) · 2.76 KB
/
FileSystem.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var FileSystem = {
$fs: null,
grantedBytes: 5 * 1024 * 2014, //5MB
errorHandler: function (e) {
console.error(e);
},
request: function (fsSize) {
var self = this;
fsSize = fsSize || 5 * 1024 * 2014;
return new Promise(function (resolve, reject) {
navigator.webkitPersistentStorage.requestQuota(fsSize, function (grantedBytes) {
console.log(grantedBytes, "bytes");
self.grantedBytes = grantedBytes;
window.webkitRequestFileSystem(window.PERSISTENT, grantedBytes, function (fs) {
self.$fs = fs;
resolve(fs);
}, reject);
}, reject);
})
},
createFile: function (filePath) {
var self = this;
if (self.$fs) {
var fs = self.$fs;
return new Promise(function (resolve, reject) {
fs.root.getFile(filePath, { create: true, exclusive: true }, resolve, reject);
})
}
else throw new Error("$fs should not be null");
},
readFile: function (filePath) {
var self = this;
if (self.$fs) {
var fs = self.$fs;
return new Promise(function (resolve, reject) {
fs.root.getFile(filePath, {}, resolve, reject);
})
}
else throw new Error("$fs should not be null");
},
readFileText: function (filePath) {
var self = this;
return new Promise(function (resolve, reject) {
return self.readFile(filePath).then(function (fileEntry) {
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (e) {
resolve(this.result);
}
reader.onerror = function (e) {
reject(e);
}
reader.readAsText(file);
});
});
});
},
writeFile: function (filePath, blob) {
var self = this;
if (self.$fs) {
var fs = self.$fs;
return new Promise(function (resolve, reject) {
return self.createFile(filePath).then(function (fileEntry) {
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function (e) {
resolve(fileEntry);
}
fileWriter.onerror = function (e) {
reject(e)
}
fileWriter.write(blob);
}, self.errorHandler)
});
});
}
else throw new Error("$fs should not be null");
}
}