Skip to content

Commit 84d1b22

Browse files
committed
mkdir the parent folder
1 parent 9fba863 commit 84d1b22

File tree

2 files changed

+33
-8
lines changed

2 files changed

+33
-8
lines changed

example.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const createFile = require('./')
22

3-
const st = createFile('hello-world.txt')
3+
const st = createFile('folder/hello-world.txt')
44
var missing = 2
55

66
st.write(0, Buffer.from('hello '), done)

index.js

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function createFile (name, opts) {
3333
var readers = []
3434
var writers = []
3535

36-
return ras({read, write, open, stat, close})
36+
return ras({read, write, open, stat, close, destroy})
3737

3838
function read (req) {
3939
const r = readers.pop() || new ReadRequest(readers, file, entry, mutex)
@@ -54,28 +54,53 @@ function createFile (name, opts) {
5454
req.callback(null, file)
5555
}
5656

57+
function destroy (req) {
58+
entry.remove(ondone, onerror)
59+
60+
function ondone () {
61+
req.callback(null, null)
62+
}
63+
64+
function onerror (err) {
65+
req.callback(err, null)
66+
}
67+
}
68+
5769
function open (req) {
5870
requestQuota(maxSize, false, function (err, granted) {
5971
if (err) return onerror(err)
6072
requestFileSystem(window.PERSISTENT, granted, function (res) {
6173
fs = res
62-
fs.root.getFile(name, {create: true}, function (e) {
63-
entry = e
64-
entry.file(function (f) {
65-
file = f
66-
req.callback(null)
74+
mkdir(folder(name), function () {
75+
fs.root.getFile(name, {create: true}, function (e) {
76+
entry = e
77+
entry.file(function (f) {
78+
file = f
79+
req.callback(null)
80+
}, onerror)
6781
}, onerror)
68-
}, onerror)
82+
})
6983
}, onerror)
7084
})
7185

86+
function mkdir (name, ondone) {
87+
if (!name) return ondone()
88+
fs.root.getDirectory(name, {create: true}, ondone, ondone)
89+
}
90+
7291
function onerror (err) {
7392
fs = file = entry = null
7493
req.callback(err)
7594
}
7695
}
7796
}
7897

98+
function folder (path) {
99+
const i = path.indexOf('/')
100+
const j = path.indexOf('\\')
101+
return path.slice(0, Math.max(0, i, j))
102+
}
103+
79104
function WriteRequest (pool, file, entry, mutex) {
80105
this.writer = null
81106
this.entry = entry

0 commit comments

Comments
 (0)