如何访问 Tizen 文件系统
PUBLISHED
概述
若要访问文件系统,您需要向 config.xml 文件添加所需的权限。 建议使用 tizen SDK 来启用该功能。 打开 config.xml 文件, 选择 功能并单击 tizen SDK 中的 http://tizen.org/api/filesystem 选项。 或者你可以手动将下面一行添加到 config.xml 文件中。 您可以使用 tizen FileSystemManagerObject 来访问文件系统 API 的功能。 您可以访问使用 tizen.filesystem 访问 FileSystemManagerObject。 要在文件系统中创建文件或执行任何操作,您需要使用 tizen.filesystem.resolve() 解析目录并获取代表目录的对象。 您可以使用代表目录的对象创建文件。 createFile() 将文件名作为参数。 若要获得对文件的访问,您需要解决代表某个目录的对象的 resolve() 方法解决该文件。 如果文件存在,您便会收到代表文件句柄的一个文件对象。 您需要打开该文件以对其执行操作(读/写)。 您可以使用 openStream() 方法来打开该文件,它便会在成功时返回 FileStream 对象。 FileStream 充当打开的文件的句柄。 openStream() 使用最多四个参数 void openStream(FileMode mode, FileStreamSuccessCallback onsuccess, optional ErrorCallback? onerror, optional DOMString? encoding); 您可以在成功回调 openStream() 方法后获得 FileStream 对象。 您可以在 FileStream 上使用 write() 方法,它将要写入文件的文本作为输入。 Write () 函数调用后关闭该流。 您可以用两种方法从文件中读取。 一个方法是解决文件,获取与该文件关联的流,并从流中读取。此方法非常类似于在上面解释的 write () 。 您可以使用文件对象的 fileSize 属性了解文件的当前大小。 在打开该文件之后, 流的位置设置在文件的开头。 位置表示在下一个读取操时首先读取哪个字节。 使用流的位置属性设置位置。 从文件中读取 n 个字节将导致位置向前移动 n 个字节。 BytesAvailable 属性表示在到达文件末尾时还有多少字节可读取。 您可以使用位置属性设置读取字节的位置,,并调用 read () 函数,以从文件中读取所有剩余的字节。 第二种方法是使用文件对象的 readAsText() 方法。 使用这种情况,您不需要打开文件流,readAsText() 方法的成功回调将该文件的内容作为作为字符串接收。 您可以使用 deleteFile() 方法删除该文件。 它将包括完整路径的文件名称用作参数。
目录
在配置文件中定义功能
创建文件
解析目录
var documentsDir;
function onResolveSuccess(dir) {
documentsDir = dir;
}
function onResolveError(e) {
console.log('message: ' + e.message);
}
tizen.filesystem.resolve('documents', onResolveSuccess, onResolveError, 'rw');
创建文件
documentsDir.createFile('sample-text-file.txt');
写入文件
模式
用途
"r"
读取
"a"
附加
"rw"
写入
try {
file = documentsDir.resolve('sample-text-file.txt');
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);
/ / 发生任何错误时停止
return;
}
try {
file.openStream(
// 打开以附加
'a',
// 成功回调 - 添加文本区域的内容
writeToStream,
// 错误回调
onError
);
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}
function writeToStream(fileStream) {
try {
fileStream.write('This is my first sentence to write.');
fileStream.close();
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}
从文件中读取
try {
file = documentsDir.resolve('sample-text-file.txt');
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);
/ / 如果发生任何错误,则停止
return;
}
try {
file.openStream(
/ / 打开以读取
'r',
/ / 成功回调 - 添加文本区域的内容
readFromStream,
/ / 错误回调
onError
);
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}
function readFromStream(fileStream) {
try {
fileStream.position = 10;
var contents = fileStream.read(fileStream.bytesAvailable);
fileStream.close();
console.log('file contents after pos 10:' + contents);
} catch (exc) {
console.log('Could not read from file: ' + exc.message);
}
function displayFileContentsText() {
var file;
try {
file = documentsDir.resolve('sample-text-file.txt');
console.log('File size: ' + file.fileSize);
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);
/ / 发生任何错误时停止
return;
}
try {
file.readAsText(
/ /成功回调 - 显示文件的内容
function(contents) {
console.log('File contents:' + contents);
},
/ / 错误回调
onError
);
} catch (exc) {
console.log('readAsText() exception:' + exc.message + '
');
}
}
删除文件
function deleteSampleFile() {
try {
documentsDir.deleteFile(
documentsDir.fullPath + '/sample-text-file.txt',
} catch (exc) {
console.log('deleteSampleFile(): ' + exc.message);
}