增加遍历目录的接口
parent
031255857d
commit
511302f72d
23
inject.js
23
inject.js
|
@ -186,20 +186,33 @@ Object.assign(native, {
|
|||
return handler('quit', {}, null)
|
||||
},
|
||||
fs: {
|
||||
read(filepath) {
|
||||
return handler('fs', { action: 'read', filepath })
|
||||
read(filepath, mode = 'r') {
|
||||
return handler('fs', { action: 'read', mode, filepath }).then(r =>
|
||||
mode.includes('b') ? new Uint8Array(r) : r
|
||||
)
|
||||
},
|
||||
write(filepath, content = '', append = false) {
|
||||
write(filepath, content = '', mode = 'w') {
|
||||
return handler('fs', {
|
||||
action: 'write',
|
||||
append: false,
|
||||
filepath,
|
||||
content,
|
||||
append
|
||||
content
|
||||
})
|
||||
},
|
||||
append(filepath, content = '', mode = 'w') {
|
||||
return handler('fs', {
|
||||
action: 'write',
|
||||
append: true,
|
||||
filepath,
|
||||
content
|
||||
})
|
||||
},
|
||||
exists(filepath) {
|
||||
return handler('fs', { action: 'exists', filepath })
|
||||
},
|
||||
list(filepath) {
|
||||
return handler('fs', { action: 'list', filepath })
|
||||
},
|
||||
isfile(filepath) {
|
||||
return handler('fs', { action: 'isfile', filepath })
|
||||
},
|
||||
|
|
35
main.py
35
main.py
|
@ -197,30 +197,35 @@ class WebKitWindow(Gtk.Window):
|
|||
filepath = params.get('filepath')
|
||||
|
||||
if params['action'] == 'read':
|
||||
file = open(filepath)
|
||||
output = file.read()
|
||||
with open(filepath, params.get('mode')) as file:
|
||||
output = file.read()
|
||||
if params.get('mode').find('b') > -1:
|
||||
output = list(output)
|
||||
|
||||
if params['action'] == 'write':
|
||||
try:
|
||||
|
||||
# 调整以支持二进制数据写入
|
||||
buff = params['content']
|
||||
if type(buff) == list:
|
||||
buff = bytes(buff)
|
||||
file = open(filepath, 'ab' if params['append'] else 'wb')
|
||||
else:
|
||||
file = open(filepath, 'a' if params['append'] else 'w')
|
||||
with open(filepath, params.get('mode')) as file:
|
||||
buff = params['content']
|
||||
|
||||
output = file.write(buff)
|
||||
finally:
|
||||
if file:
|
||||
file.close()
|
||||
if params.get('mode').find('b') > -1:
|
||||
buff = bytes(buff)
|
||||
|
||||
output = file.write(buff)
|
||||
|
||||
if params['action'] == 'exists':
|
||||
output = os.path.exists(filepath)
|
||||
|
||||
if params['action'] == 'list':
|
||||
file = open(filepath)
|
||||
output = file.read()
|
||||
with os.scandir(filepath) as entries:
|
||||
output = [{
|
||||
"name": it.name,
|
||||
"path": os.path.join(filepath, it.name),
|
||||
"is_dir": it.is_dir(),
|
||||
"size": it.stat().st_size,
|
||||
"atime": int(it.stat().st_atime),
|
||||
"mtime": int(it.stat().st_mtime),
|
||||
} for it in entries]
|
||||
|
||||
if params['action'] == 'remove':
|
||||
if os.path.isfile(filepath):
|
||||
|
|
|
@ -53,13 +53,24 @@ class App extends Component {
|
|||
</button>
|
||||
<button
|
||||
@click=${async function () {
|
||||
let data = await native.fs.read('/code/gtk/webkit/demo.txt')
|
||||
let data = await native.fs.read('/code/gtk/webkit/red.png', 'rb')
|
||||
console.log(data)
|
||||
this.content = data
|
||||
// this.content = data
|
||||
this.img = URL.createObjectURL(
|
||||
new Blob([data], { type: 'image/png' })
|
||||
)
|
||||
}}
|
||||
>
|
||||
cat file
|
||||
</button>
|
||||
<button
|
||||
@click=${async function () {
|
||||
let data = await native.fs.list('/code/gtk/webkit/')
|
||||
console.log(data)
|
||||
}}
|
||||
>
|
||||
list dir
|
||||
</button>
|
||||
<button
|
||||
@click=${async function () {
|
||||
await native.fs.write(
|
||||
|
@ -107,7 +118,7 @@ class App extends Component {
|
|||
await native.fs.write(
|
||||
'/code/gtk/webkit/demo.png',
|
||||
Array.from(u8.slice(i, i + 2048)),
|
||||
true
|
||||
'wb'
|
||||
)
|
||||
}
|
||||
}}
|
||||
|
|
Reference in New Issue