我正在尝试在tizen中创建新文件。我的代码是
var dir;
var newDir = dir.createDirectory("vij");
但它的错误就像
TypeError: 'undefined' is not an object (evaluating 'dir.createDirectory')
我尝试了Tizen文档中给出的相同示例。请提出一个想法
答案 0 :(得分:4)
只需声明dir
:
var dir = tizen.filesystem;
答案 1 :(得分:2)
由于代码中的var dir;
,您实际上声明了一个未定义的dir
变量,因此dir
将为undefined
。
如果您检查文档中的API,则可以使用以下方法:
var documentsDir;
function onsuccess(files) {
for(var i = 0; i < files.length; i++) {
console.log("File Name is " + files[i].name); // displays file name
}
var testFile = documentsDir.createFile("test.txt");
if (testFile != null) {
testFile.openStream(
"w",
function(fs){
fs.write("HelloWorld");
fs.close();
}, function(e){
console.log("Error " + e.message);
}, "UTF-8"
);
}
}
function onerror(error) {
console.log("The error " + error.message + " occurred when listing the files in the selected folder");
}
tizen.filesystem.resolve(
'documents',
function(dir){
documentsDir = dir; dir.listFiles(onsuccess,onerror);
}, function(e) {
console.log("Error" + e.message);
}, "rw"
);
在上面的上下文中,您在文档中找到的两个下面显示的示例是tizen.filesystem.resolve被调用。
var newDir = dir.createDirectory("newDir");
var anotherNewDir = dir.createDirectory("newDir1/subNewDir1");
所以,如果你想创建一个文件,你就可以在listFiles的onsuccess回调中创建上面的代码(完全是第一个),如果你想创建一个目录你需要这样做:
tizen.filesystem.resolve(
'documents',
function(dir){
var newDir = dir.createDirectory("vij");
}, function(e){
console.log("Error" + e.message);
}, "rw"
);
答案 2 :(得分:2)
首先,您需要在config.xml中使用2个特权来写入文件:
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/>
<tizen:privilege name="http://tizen.org/privilege/filesystem.read"/>
可以手动添加,也可以使用“previlages”选项卡添加。
在那之后,你shpuld使用Filesystem API methods - createDirectory
tizen.filesystem.resolve(
'images',
function(dir) {
var dir; //Directory object obtained from filesystem API
var newDir = dir.createDirectory("newDir");
console.log("Mount point Name is " + dir.path);
}, function(e) {
console.log("Error: " + e.message);
}, "rw"
);
因此,您将在/ opt / usr / media / Images /
答案 3 :(得分:2)
这是您在tizen Web应用程序中添加文件的方式:
创建文件:
在相对于目录的指定位置创建一个空的新文件。 &#34;文件createFile(DOMString relativeFilePath);&#34;
示例:
tizen.filesystem.resolve(
absolute_path,
function(dir){
dir.createFile(<filename>);
}, function(e) {
console.log("Error" + e.message);
}, "rw"
);
更多信息可在以下链接中找到: http://howdoudoittheeasiestway.blogspot.in/2015/02/writing-and-reading-from-file-system.html
答案 4 :(得分:2)
您需要使用目录对象从tizen.filesystem.resolve API解析文件或目录对象。
在你的代码中你的dir对象只包含空字符串。
所以,首先从tizen.filesystem.resolve API获取File(file&amp; dir)对象。
下面是tizen.filesystem.resolve api,你可以在FileSuccessCallback onsuccess方法上获取文件对象。
void resolve(DOMString location, FileSuccessCallback onsuccess, optional ErrorCallback? onerror, optional FileMode? mode);
如下面的代码。
tizen.filesystem.resolve(
'images',
function(dir) {
//do something what you want
console.log("Mount point Name is " + dir.path);
}, function(e) {
console.log("Error: " + e.message);
}, "r"
);
有关API参考的有用教程和示例代码。
FileSystem教程 https://developer.tizen.org/development/tutorials/web-application/tizen-features/base/filesystem#create
Filesystem API参考 https://developer.tizen.org/dev-guide/latest/org.tizen.web.apireference/html/device_api/mobile/tizen/filesystem.html
以下是虚拟根表
images - the location for images
videos - the location for videos
music - the location for sounds
documents - the location for documents
downloads - the location for downloaded items
ringtones - the location for ringtones (read-only location)
camera - the location for the pictures and videos taken by a device (supported since Tizen 2.3)
wgt-package - the location for widget package which is read-only
wgt-private - the location for a widget's private storage
wgt-private-tmp - the location for a widget's private volatile storage