Javascript 如何使用phonegap文件api在该目录中创建目录和文件?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11077303/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to create a directory and file in that directory using phonegap file api?
提问by mmathan
I am using phonegap file api to create a directory and create a file in the directory created. The directory is getting created, but the file is not getting created in the directory.
我正在使用phonegap文件api创建一个目录并在创建的目录中创建一个文件。正在创建目录,但未在目录中创建文件。
The code I am using is:
我正在使用的代码是:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
var dataDir = fileSystem.root.getDirectory("data", {create: true});
var file = dataDir.getFile("lockfile.txt", {create: true, exclusive: true});
}
The directory data is created but lockfile.txt
is not getting created.
目录数据已创建但未lockfile.txt
创建。
回答by Simon MacDonald
You need to call the code in an async manner:
您需要以异步方式调用代码:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getDirectory("data", {create: true}, gotDir);
}
function gotDir(dirEntry) {
dirEntry.getFile("lockfile.txt", {create: true, exclusive: true}, gotFile);
}
function gotFile(fileEntry) {
// Do something with fileEntry here
}
回答by luther
Is this work?
这是工作吗?
var file = fileSystem.root.getFile("data" + "lockfile.txt", {create: true, exclusive: true});
回答by Parth Devmorari
Download file from the url to your device using phonegap
使用 phonegap 将文件从 url 下载到您的设备
It is working 3.0 and up to for iOS and android
它适用于 3.0 及更高版本,适用于 iOS 和 android
var folderName = 'xyz';
var fileName;
function downloadFile(URL) {
//step to request a file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem) {
var download_link = encodeURI(URL);
fileName = download_link.substr(download_link.lastIndexOf('/') + 1); //Get filename of URL
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(folderName, {
create: true,
exclusive: false
}, onDirectorySuccess, onDirectoryFail); // creating folder in sdcard
var rootdir = fileSystem.root;
var fp = fileSystem.root.toNativeURL(); // Returns Fullpath of local directory
fp = fp + "/" + folderName + "/" + fileName; // fullpath and name of the file which we want to give
// download function call
filetransfer(download_link, fp);
}
function onDirectorySuccess(parent) {
// Directory created successfuly
}
function onDirectoryFail(error) {
//Error while creating directory
alert("Unable to create new directory: " + error.code);
}
function fileSystemFail(evt) {
//Unable to access file system
alert(evt.target.error.code);
}
}
function filetransfer(download_link, fp) {
var fileTransfer = new FileTransfer();
// File download function with URL and local path
fileTransfer.download(download_link, fp,
function(entry) {
alert("download complete: " + entry.fullPath);
},
function(error) {
//Download abort errors or download failed errors
alert("download error source " + error.source);
}
);
}
回答by Parth Devmorari
function download(URL, fileName){
var folderName = 'xyz';
var uri = encodeURI(URL);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function (fileSystem) {
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(folderName, {
create: true,
exclusive: false
}, onDirectorySuccess, onDirectoryFail);
var filename = fileSystem.root.toURL() + folderName + "/" + uri.substr(uri.lastIndexOf("/") + 1);
var fileTransfer = new FileTransfer();
fileTransfer.download(uri, filename,
function(entry) { // download success
var path = entry.toURL(); //**THIS IS WHAT I NEED**
window.plugins.toast.showLongBottom("Download Completed: " + entry.fullPath, function (a) {
}, function (b) {
});
},
function(error) {
console.log("error")
} // irrelevant download error
);`enter code here`
},
function(error) {
console.log("error2")
} // irrelevant request fileSystem error
);
function onDirectorySuccess(parent) {
// Directory created successfuly
console.log("Directory created successfuly: " + JSON.stringify(parent));
var fp = (parent.nativeURL) + fileName;
filetransfer(download_link, fp);
}
function onDirectoryFail(error) {
//Error while creating directory
alert("Unable to create new directory: " + error.code);
}
}