7.5 创建及删除目录和文件
优质
小牛编辑
126浏览
2023-12-01
在7.1节中介绍过,Entry的getDirectory
和getFile
方法可以获取和创建子目录和文件,在本节将主要讲解创建目录和文件。同时也会介绍删除目录和文件的方法。
在调用getDirectory
方法时,如果在参数对象中指定create
属性为true
,则会创建相应的子目录,如:
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(Entry) {
Entry.getDirectory('new_folder', {create: true}, function(subEntry) {
//We'll do something with subEntry later
}, errorHandler);
});
这将在用户所选择的目录下创建一个名为new_folder的子文件夹。同时也可以指定参数对象exclusive
属性为true
,这将避免创建同名子目录——如果一旦创建的目录名与一已存在的子目录相同,会返回错误,而不会自动使用其他目录名。
当指定exclusive为true,且创建同名目录时会抛出错误
同样在调用getFile
方法时,参数对象中指定create
属性为true
会创建文件:
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(Entry) {
Entry.getFile('log.txt', {create: true}, function(fileEntry) {
//We'll do something with fileEntry later
}, errorHandler);
});
创建文件与创建目录基本相同,指定exclusive
属性为true
时,创建同名文件也会引起错误,所得到的错误信息与目录相同。
除了在用户选择的目录下创建文件外,也可以指定chooseEntry
方法的打开类型为saveFile
,这样用户看到的将不是一个目录选择窗口,而是一个另存为窗口:
chrome.fileSystem.chooseEntry({
type: 'saveFile',
suggestedName: 'log.txt'
}, function(fileEntry) {
//We'll do something with fileEntry later
});
通过指定suggestedName
的值可以在另存为窗口中给出默认文件名,但用户可以自行更改这个文件名。
带有默认文件名的另存为窗口
Entry和FileEntry的remove
方法可以删除自身:
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(Entry) {
Entry.getDirectory('new_folder', {}, function(subEntry) {
subEntry.remove(function(){
console.log('Directory has been removed.');
}, errorHandler);
}, errorHandler);
Entry.getFile('log.txt', {}, function(fileEntry) {
fileEntry.remove(function(){
console.log('File has been removed.');
}, errorHandler);
}, errorHandler);
});
对于目录来说,只有当目录不包含任何文件和子目录的时候remove
方法才会调用成功,否则会报错。如果想删除包含内容的目录,需要使用removeRecursively
方法:
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(Entry) {
Entry.getDirectory('new_folder', {}, function(subEntry) {
subEntry.removeRecursively(function(){
console.log('Directory has been removed.');
}, errorHandler);
}, errorHandler);
});