PhoneGap API帮助文档翻译—File(文件)

用于读取、写入和浏览文件系统层次结构的API。对象:

  • DirectoryEntry
  • DirectoryReader
  • File
  • FileEntry
  • FileError
  • FileReader
  • FileSystem
  • FileTransfer
  • FileTransferError
  • FileUploadOptions
  • FileUploadResult
  • FileWriter
  • Flags
  • LocalFileSystem
  • Metadata


DirectoryEntry 

该对象代表文件系统中的一个目录,W3C的目录和系统规范对其进行了定义。

属性:

  • isFile: 总是false。(布尔类型)isFile:总是false。(布尔类型)
  • isDirectory:总是true。(布尔类型)
  • name:DirectoryEntry的名称,不包含前置路径。(DOMString类型)
  • fullPath:从根目录到当前DirectoryEntry的完整绝对路径。(DOMString类型)


备注:以下属性虽然在W3C规范中进行了定义,但PhoneGap并不支持:

  • filesystem:DirectoryEntry驻留的文件系统。(FileSystem类型)



方法:
DirectoryEntry对象有以下方法可以被调用:

  • getMetadata: 获得目录的元数据。
  • moveTo:移动一个目录到文件系统中不同的位置。
  • copyTo:拷贝一个目录到文件系统中不同的位置。
  • toURI:返回一个可以定位目录的URI。
  • remove:删除一个目录,被删除的目录必须是空的。
  • getParent:查找父级目录。
  • createReader:创建一个可以从目录中读取条目的新DirectoryReader对象。
  • getDirectory:创建或查找一个目录。
  • getFile:创建或查找一个文件。
  • removeRecursively:删除一个目录以及它的所有内容。


支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


getMetadata:

查找目录的元数据。

参数:

  • successCallback:获取元数据successCallback:获取元数据成功后回调此函数,参数为一个Metadata 对象。(函数类型)
  • errorCallback:试图检索元数据发生错误的时候回调此函数,参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(metadata) {      
  2.     console.log("Last Modified:" + metadata.modificationTime);    
  3. }  
  4.   
  5. function fail(error) {    
  6.     alert(error.code);    
  7. }  
  8.   
  9. // 请求这个条目的元数据对象   
  10. entry.getMetadata(success, fail);  
复制代码

moveTo:

移动一个目录到文件系统中不同的位置。在尝试进行以下操作时会发生错误:

  • 移动目录到其自身,或者移动到其任意深度的任意子目录中;
  • 同级移动(将一个目录移动到它的父目录中)时没有提供和当前名称不同的名称;
  • 移动目录到一个文件所占用的路径;
  • 移动目录到一个非空目录所占用的路径。


另外,尝试移动一个目录到另一个已经存在的空目录上时,系统会尝试删除并替换已存在的目录。

参数:

  • parent:将目录对象移动到的父级目录。(DirectoryEntry类型)
  • newName:目录的新名字。如果没有指定,默认为当前名字。(DOMString类型)
  • successCallback:移动成功后调用的回调函数,参数为移动后的新目录的DirectoryEntry对象。(函数类型)
  • errorCallback:试图移动目录发生错误时调用的回调函数,参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(entry) {  
  2.     console.log("New Path:" + entry.fullPath);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. function moveDir(entry) {  
  10.     var parent = document.getElementById('parent').value;  
  11.     newName = document.getElementById('newName').value;  
  12.     parentEntry = new DirectoryEntry({fullPath: parent});  
  13.   
  14.     // 移动目录到一个新目录,并将其重命名  
  15.     entry.moveTo(parentEntry, newName, success, fail);  
  16. }  
复制代码

copyTo:

拷贝一个目录到文件系统中不同的位置。在尝试进行以下操作时会发生错误:

  • 拷贝一个目录到其任意深度的子目录中;
  • 同级拷贝(将一个目录拷贝到它的父目录中)时没有提供和当前名称不同的名称;

目录复制总是递归操作 — 也就是说,会拷贝目录中的所有内容。

参数:

  • parent:将目录对象拷贝到的父级目录。(DirectoryEntry类型)
  • newName:目录的新名称。如果没有指定,默认为当前名字。(DOMString类型)
  • successCallback:拷贝成功后调用的回调函数,参数为拷贝后的新目录的DirectoryEntry对象。(函数类型)
  • errorCallback:试图拷贝目录发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function win(entry) {  
  2.     console.log("New Path:" + entry.fullPath);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. function copyDir(entry) {  
  10.     var parent = document.getElementById('parent').value,  
  11.         newName = document.getElementById('newName').value,  
  12.         parentEntry = new DirectoryEntry({fullPath: parent});  
  13.   
  14.    // 拷贝目录到一个新的目录,并将其重命名  
  15.    entry.copyTo(parentEntry, newName, success, fail);  
  16. }  
复制代码

toURI:

返回一个用于定位该文件的URI。

简单的范例:

  1. // 请求此条目的URI  
  2. var uri = entry.toURI();  
  3. console.log(uri);  
复制代码

remove:

删除一个目录。在尝试进行以下操作时会发生错误:

  • 删除一个非空目录;
  • 删除文件系统的根目录。


参数:

  • successCallback:目录删除成功后调用的回调函数,无参数。(函数类型)
  • errorCallback:试图删除目录发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(entry) {  
  2.     console.log("Removal succeeded");  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert('Error removing directory: ' + error.code);  
  7. }  
  8.   
  9. // 移除这个目录  
  10. entry.remove(success, fail);  
复制代码

getParent:

查找包含当前目录的父级DirectoryEntry。

参数:

  • successCallback: 查找成功后调用此回调函数,参数为当前目录的父级DirectoryEntry对象。(函数类型)
  • errorCallback:试图获得当前目录的父级DirectoryEntry对象发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(parent) {  
  2.     console.log("Parent Name: " + parent.name);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert('Failed to get parent directory: ' + error.code);  
  7. }  
  8.   
  9.   
  10. // 获得父级DirectoryEntry对象  
  11. entry.getParent(success, fail);  
复制代码


createReader:
建立一个新的DirectoryReader对象用来读取目录的所有条目。

简单的范例:

  1. // 创建一个DirectoryReader对象  
  2. var directoryReader = entry.createReader();  
复制代码

getDirectory:

  • 创建新的目录或查询一个存在的目录,在尝试进行以下操作时会发生错误:


创建一个直属父级目录尚不存在的目录。

参数:

  • path:查找或创建的目录路径,可以是一个绝对路径或者是对应当前DirectoryEntry的相对路径。(DOMString类型)
  • options:用于指定如果查找的目录不存在时是否创建该目录的选项。(Flags类型)
  • successCallback:获取成功后调用的回调函数,参数为查找到或创建的DirectoryEntry对象。(函数类型)
  • errorCallback:创建或查找目录发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(parent) {  
  2.     console.log("Parent Name:" + parent.name);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert("Unable to create new directory:"+ error.code);  
  7. }  
  8.   
  9. // 检索一个已存在的目录,如果该目录不存在时则创建该目录  
  10. entry.getDirectory(“newDir”, {create: true, exclusive: false}, success, fail);  
复制代码

getFile:

创建新的文件或查询一个存在的文件,在尝试进行以下操作时会发生错误:

  • 创建一个直属父级目录尚不存在的文件。


参数:

  • path:查找或创建的文件路径,可以是一个绝对路径或者是对应当前DirectoryEntry的相对路径。(DOMString类型)
  • options:用于指定如果查找的文件不存在时是否创建该文件的选项。(Flags类型)
  • successCallback:获取成功后调用的回调函数,参数为查找到或创建的FileEntry对象。(函数类型)
  • errorCallback:创建或查找文件发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(parent) {  
  2.     console.log("Parent Name:" + parent.name);  
  3. }  
  4.       
  5. function fail(error) {  
  6.     alert("Failed to retrieve file:" + error.code);  
  7. }  
  8.       
  9. // 检索一个已存在的文件,如果该文件不存在时则创建该文件  
  10. entry.getFile(“newFile.txt”, {create: true, exclusive: false}, success, fail);  
复制代码

removeRecursively:

删除一个目录及其所有内容。在删除过程中发生错误时(例如:试图删除一个包含不可删除文件的目录),该目录中的部分内容可能已经被删除。在尝试进行以下操作时会发生错误:

  • 删除filesystem的根目录。


参数:

  • successCallback:当DirectoryEntry删除成功后调用的回调函数,无参数。(函数类型)
  • errorCallback:当试图删除DirectoryEntry发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(parent) {  
  2.     console.log("Remove Recursively Succeeded");  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert("Failed to remove directory or it's contents:" + error.code);  
  7. }  
  8.   
  9. // 删除此目录及其所有内容  
  10. entry.removeRecursively(success, fail);  
复制代码

DirectoryReader 

包含目录中所有的文件和子目录的列表对象,W3C的目录和系统规范对其进行了定义。

方法:

  • readEntries:读取目录中的所有条目。


支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


readEntries:

读取当前目录中的所有条目。

参数:

  • successCallback:读取成功后调用的回调函数,参数为一个包含FileEntry和DirectoryEntry的对象数组。(函数类型)
  • errorCallback:检索目录列表发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)

简单的范例:

  1. function success(entries) {  
  2.     var i;  
  3.     for(i=0;i< entries.length;i++) {  
  4.         console.log(entries[i].name);  
  5.     }  
  6. }  
  7.   
  8. function fail(error) {  
  9.     alert("Failed to list directory contents:" + error.code);  
  10. }  
  11.   
  12. // 创建一个目录读取器  
  13. var directoryReader = dirEntry.createReader();  
  14.   
  15. // 获取目录中的所有条目  
  16. directoryReader.readEntries(success,fail);  
复制代码

File 

该对象包含单个文件的属性。

属性:

  • name:文件的名称。(DOMString类型)
  • fullPath:文件的完整路径,包含文件名称。(DOMString类型)
  • type:文件的mime类型。(DOMString类型)
  • lastModifiedDate:文件最后被修改的时间。(日期类型)
  • size:以字节为单位的文件大小。(长整型)


详述:
File对象包含单个文件的属性,你可以通过调用FileEntry对象的file方法获得一个File对象实例

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS

FileSystem 
这个对象表示一个文件系统。

属性:

  • name:文件系统的名称。(DOMString类型)
  • root:文件系统的根目录。(DirectoryEntry类型)

详述:
FileSystem对象代表当前文件系统的信息。文件系统的名称在公开的文件系统列表中是唯一的。它的root属性包含一个代表当前文件系统的根目录的DirectoryEntry对象。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


File System简单的范例:

  1. function onSuccess(fileSystem) {  
  2.     console.log(fileSystem.name);  
  3.     console.log(fileSystem.root.name);  
  4. }  
  5.   
  6. // 请求当前持久化的文件系统  
  7. window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, null);  
复制代码

完整的范例:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>File System Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);  
  11.       
  12.     // PhoneGap加载完毕  
  13.     function onDeviceReady() {  
  14.         window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);  
  15.     }  
  16.       
  17.     function onFileSystemSuccess(fileSystem) {  
  18.         console.log(fileSystem.name);  
  19.         console.log(fileSystem.root.name);  
  20.     }  
  21.       
  22.     function fail(evt) {  
  23.         console.log(evt.target.error.code);  
  24.     }  
  25.   
  26. </script>  
  27. </head>  
  28. <body>  
  29.     <h1>Example</h1>  
  30.     <p>File System</p>  
  31. </body>  
  32. </html>  
复制代码

FileEntry 
该对象代表文件系统中的一个文件,W3C目录和系统规范对其进行了定义。

属性:

  • isFile:返回值总是true。(布尔类型)
  • isDirectory:返回值总是false。(布尔类型)
  • name:FileEntry的名称,不包含前置路径。(DOMString类型)
  • fullPath:从根目录到当前FileEntry的完整绝对路径。(DOMString类型)


备注:以下属性虽然在W3C规范中进行了定义,但PhoneGap并不支持:

  • filesystem:FileEntry驻留的文件系统名称。(FileSystem类型)

方法:

  • getMetadata: 获得文件的元数据。
  • moveTo:移动一个文件到文件系统中不同的位置。
  • copyTo:拷贝一个文件到文件系统中不同的位置。
  • toURI:返回一个可以定位文件的URI。
  • remove:删除一个文件。
  • getParent:查找父级目录。
  • createWriter:创建一个可以写入文件的FileWriter对象。
  • file:创建一个包含文件属性的File对象。


支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


getMetadata:

查找文件的元数据。

参数:

  • successCallback:获取元数据成功后调用的回调函数,参数为一个Metadata 对象。(函数类型)
  • errorCallback:试图检索元数据发生错误后调用的回调函数,参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(metadata) {  
  2.     console.log("Last Modified:" + metadata.modificationTime);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. // 请求这个条目的元数据对象  
  10. entry.getMetadata(success, fail);  
复制代码

moveTo:

移动一个文件到文件系统中不同的位置。在尝试进行以下操作时会发生错误:

  • 同级移动(将一个文件移动到它的父目录中)时没有提供和当前名称不同的名称;
  • 移动文件到一个目录所占用的路径;


此外,尝试移动一个文件到另一个已经存在的空文件上时,系统会尝试删除并替换已存在的文件。

参数:

  • parent:将文件对象移动到的父级目录。(DirectoryEntry类型)
  • newName:文件的新名称。如果没有指定,默认为当前名字。(DOMString类型)
  • successCallback:移动成功后调用的回调函数,参数为移动后新文件的FileEntry对象。(函数类型)
  • errorCallback:试图移动文件发生错误时调用的回调函数,参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(entry) {  
  2.     console.log("New Path: " + entry.fullPath);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. function moveFile(entry) {  
  10.     var parent = document.getElementById('parent').value,  
  11.         parentEntry = new DirectoryEntry({fullPath: parent});  
  12.   
  13.     // 移动文件到一个新目录,并将其重命名  
  14.     entry.moveTo(parentEntry, "newFile.txt", success, fail);  
  15. }  
复制代码

copyTo:

拷贝一个文件到文件系统中新的位置。在尝试进行以下操作时会发生错误:

  • 同级拷贝(将一个文件拷贝到它的父目录中)时没有提供和当前名称不同的名称;


参数:

  • parent:将文件对象拷贝到的父级目录。(DirectoryEntry类型)
  • newName:文件的新名字。如果没有指定,默认为当前名字。(DOMString类型)
  • successCallback:拷贝成功后调用的回调函数,参数为拷贝后新文件的FileEntry对象。(函数类型)
  • errorCallback:试图拷贝文件发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function win(entry) {  
  2.     console.log("New Path: " + entry.fullPath);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. function copyFile(entry) {  
  10.     var parent = document.getElementById('parent').value,  
  11.         parentEntry = new DirectoryEntry({fullPath: parent});  
  12.   
  13.     // 拷贝文件到一个新的目录,并将其重命名  
  14.     entry.copyTo(parentEntry, "file.copy", success, fail);  
  15. }  
复制代码

toURI:

返回一个用于定位该文件的URI。

简单的范例:

  1. // 请求此条目的URI  
  2. var uri = entry.toURI();  
  3. console.log(uri);
复制代码

remove:

删除一个文件。

参数:

  • successCallback:文件删除成功后调用的回调函数,无参数。(函数类型)
  • errorCallback:试图删除文件发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(entry) {  
  2.     console.log("Removal succeeded");  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert('Error removing file: ' + error.code);  
  7. }  
  8.   
  9. // 移除该文件  
  10. entry.remove(success, fail);  
复制代码

getParent:

查找包含当前文件的父级DirectoryEntry。

参数:

  • successCallback:查找成功后调用的回调函数,参数为当前文件的父级DirectoryEntry对象。(函数类型)
  • errorCallback:试图获得当前文件的父级DirectoryEntry对象发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. [free]function success(parent) {  
  2.  
  3.     console.log("Parent Name: " + parent.name);  
  4.  
  5. }  
  6. function fail(error) {  
  7.  
  8.     alert(error.code);  
  9.  
  10. }  
  11.  
  12.   
  13.  
  14. // 获得父级DirectoryEntry对象  
  15.  
  16. entry.getParent(success, fail);  [/free]
复制代码

createWriter:

创建一个FileEntry所代表的文件相关的FileWriter对象。

参数:

  • successCallback:创建成功后调用的回调函数,参数为FileWriter对象。(函数类型)
  • errorCallback:试图创建FileWriter发生错误时调用的回调函数,其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(writer) {  
  2.     writer.write("Some text to the file");  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert(error.code);  
  7. }  
  8.   
  9. // 创建一个用于写文件的FileWriter对象  
  10. entry.createWriter(success, fail);  
复制代码

file

返回表示这个FileEntry所代表文件的当前状态的File对象。

参数:

  • successCallback:获取成功后调用的回调函数,其参数为一个File对象。(函数类型)
  • errorCallback:创建File对象发生错误时调用的回调函数(例如:底层的文件已不再存在),其参数为一个FileError对象。(函数类型)


简单的范例:

  1. function success(file) {  
  2.     console.log("File size: " + file.size);  
  3. }  
  4.   
  5. function fail(error) {  
  6.     alert("Unable to retrieve file properties: " + error.code);  
  7. }  
  8.   
  9. // 获得此文件的属性  
  10. entry.file(success, fail);  
复制代码

FileReader 

FileReader是一个允许用户读取文件的对象。

属性:

  • readyState:当前读取器所处的状态,取值为以下三者之一:EMPTY、LOADING和DONE。
  • result:已读取文件的内容。(DOMString类型)
  • error:包含错误信息的对象。(FileError类型)
  • onloadstart:读取启动时调用的回调函数。(函数类型)
  • onprogress:读取过程中调用的回调函数,用于汇报读取进度(progress.loaded和progress.total)。(函数类型) 不支持
  • onload:读取安全完成后调用的回调函数。(函数类型)
  • onabort:读取被中止后调用的回调函数,例如通过调用abort()方法。(函数类型)
  • onerror:读取失败后调用的回调函数。(函数类型)
  • onloadend:请求完成后调用的回调函数(无论请求是成功还是失败)。(函数类型)


方法:

  • abort:中止读取文件。
  • readAsDataURL:读取文件,结果以Base64编码的data URL形式返回。(data URL的格式由IETF在RFC2397中定义)
  • readAsText:读取文件,结果以文本字符串返回。


详述:
FileReader对象是从设备文件系统读取文件FileReader对象是从设备文件系统读取文件的一种方式,文件以文本或者Base64编码的字符 串形式读出来。用户注册自己的事件监听器来接收loadstart、progress、load、loadend、error和abort事件。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


ReadAsDataURL:

参数:

  • file:读取的文件对象


简单的范例:

  1. function win(file) {   
  2.     var reader = new FileReader();   
  3.     reader.onloadend = function(evt) {   
  4.         console.log("read success");   
  5.         console.log(evt.target.result);   
  6.     };   
  7.     reader.readAsDataURL(file);   
  8. }    
  9.   
  10. var fail = function(evt) {   
  11.     console.log(error.code);   
  12. };  
  13.   
  14. entry.file(win, fail);  
复制代码

ReadAsText:

参数:

  • file:读取的文件对象。
  • encoding:用来编码文件内容的编码格式,默认值为UTF8。


简单的范例:

  1. function win(file) {   
  2.     var reader = new FileReader();   
  3.     reader.onloadend = function(evt) {   
  4.         console.log("read success");   
  5.         console.log(evt.target.result);   
  6.     };   
  7.     reader.readAsText(file);   
  8. }    
  9.   
  10. var fail = function(evt) {   
  11.     console.log(error.code);   
  12. };   
  13.   
  14. entry.file(win, fail);  
复制代码

Abort 简单的范例:

  1. function win(file) {   
  2.     var reader = new FileReader();   
  3.     reader.onloadend = function(evt) {   
  4.         console.log("read success");   
  5.         console.log(evt.target.result);   
  6.     };   
  7.     reader.readAsText(file);   
  8.     reader.abort();   
  9. }   
  10.   
  11. function fail(error) {   
  12.     console.log(error.code);   
  13. }    
  14.   
  15. entry.file(win, fail);  
复制代码

完整的范例:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <title>FileReader Example</title>   
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>   
  7. <script type="text/javascript" charset="utf-8">   
  8.   
  9.     // 等待加载PhoneGap  
  10.       
  11.     document.addEventListener("deviceready", onDeviceReady, false);   
  12.       
  13.     // PhoneGap加载完毕  
  14.       
  15.     function onDeviceReady() {   
  16.         window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);   
  17.     }    
  18.       
  19.     function gotFS(fileSystem) {   
  20.         fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);   
  21.     }    
  22.       
  23.     function gotFileEntry(fileEntry) {   
  24.         fileEntry.file(gotFile, fail);   
  25.     }    
  26.       
  27.     function gotFile(file){   
  28.         readDataUrl(file);   
  29.         readAsText(file);   
  30.     }    
  31.       
  32.     function readDataUrl(file) {   
  33.         var reader = new FileReader();   
  34.         reader.onloadend = function(evt) {   
  35.             console.log("Read as data URL");   
  36.             console.log(evt.target.result);   
  37.         };   
  38.         reader.readAsDataURL(file);   
  39.     }    
  40.       
  41.     function readAsText(file) {   
  42.         var reader = new FileReader();   
  43.         reader.onloadend = function(evt) {   
  44.             console.log("Read as text");   
  45.             console.log(evt.target.result);   
  46.         };   
  47.         reader.readAsText(file);   
  48.     }    
  49.       
  50.     function fail(evt) {   
  51.         console.log(evt.target.error.code);   
  52.     }    
  53.   
  54. </script>  
  55. </head>  
  56. <body>  
  57.     <h1>Example</h1>  
  58.     <p>Read File</p>  
  59. </body>  
  60. </html>  
复制代码

iOS 的特异情况:

  • 不支持encoding参数,总是用UTF8编码格式。

FileWriter 
FileWriter是一个允许用户写文件的对象。

属性:

  • readyState:当前写入器所处的状态,取值为以下三者之一:INIT、WRITING和DONE。
  • fileName:要进行写入的文件的名称。(DOMString类型)
  • length:要进行写入的文件的当前长度。(长整型)
  • position:文件指针的当前位置。(长整型)
  • error:包含错误信息的对象。(FileError类型)
  • onwritestart:写入操作启动时调用的回调函数。(函数类型)
  • onprogress:写入过程中调用的回调函数,用于汇报写入进度(progress.loaded和progress.total)。(函数类型)— 不支持
  • onwrite:当写入成功完成后调用的回调函数。(函数类型)
  • onabort:写入被中止后调用的回调函数,例如通过调用abort()方法。(函数类型)
  • onerror:写入失败后调用的回调函数。(函数类型)
  • onwriteend:请求完成后调用的回调函数(无论请求是成功还是失败)。(函数类型)


方法:

  • abort:中止写入文件。
  • seek:移动文件指针到指定的字节位置。
  • truncate:按照指定长度截断文件。
  • write:向文件中写入数据。


详述:
FileWriter对象是从设备文件系统写入文件FileWriter对象是从设备文件系统写入文件的一种方式,用户注册自己的事件监听器来接收writestart、progress、write、writeend、error和abort事件。
一个FileWriter对象是为单个文件的操作而创建。你可以使用该对象多次对相应文件进行写入操作。FileWriter维护该文件的指针位置及长度 属性,这样你就可以寻找和写入文件的任何地方。默认情况下,FileWriter从文件的开头开始写入(将覆盖现有数据)。在FileWriter的构造 函数中设置可选的append参数值为ture,写入操作就会从文件的末尾开始。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 5.0或更高版本)
  • iOS


Seek的简单范例:

  1. function win(writer) {   
  2.     // 快速将文件指针指向文件的尾部   
  3.     writer.seek(writer.length);    
  4. };    
  5.   
  6. var fail = function(evt) {   
  7.     console.log(error.code);   
  8. };    
  9.   
  10. entry.createWriter(win, fail);  
复制代码

Truncate 的简单范例:

  1. function win(writer) {  
  2.     writer.truncate(10);   
  3. }   
  4.   
  5. var fail = function(evt) {   
  6.     console.log(error.code);   
  7. }  
  8.   
  9. entry.createWriter(win, fail);  
复制代码

Write 的简单范例:

  1. function win(writer) {   
  2.     writer.onwrite = function(evt) {  
  3.         console.log("write success");   
  4.     };   
  5.     writer.write("some sample text");   
  6. };    
  7.   
  8. var fail = function(evt) {   
  9.     console.log(error.code);   
  10. };    
  11.   
  12. entry.createWriter(win, fail);  
复制代码

Append 的简单范例:

  1. function win(writer) {   
  2.     writer.onwrite = function(evt) {   
  3.         console.log("write success");   
  4.     };   
  5.     writer.seek(writer.length);   
  6.     writer.write("appended text);   
  7. }    
  8.   
  9. var fail = function(evt) {   
  10.     console.log(error.code);   
  11. };    
  12.   
  13. entry.createWriter(win, fail);  
复制代码

Abort 的简单范例:

  1. function win(writer) {   
  2.     writer.onwrite = function(evt) {   
  3.         console.log("write success");   
  4.     };   
  5.     writer.write("some sample text");   
  6.     writer.abort();  
  7. }    
  8.   
  9. var fail = function(evt) {   
  10.     console.log(error.code);   
  11. };   
  12.   
  13. entry.createWriter(win, fail);  
复制代码

完整的范例:

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <title>FileWriter Example</title>    
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js"></script>   
  7. <script type="text/javascript" charset="utf-8">    
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);   
  11.       
  12.     // PhoneGap加载完毕  
  13.     function onDeviceReady() {   
  14.         window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);   
  15.     }    
  16.       
  17.     function gotFS(fileSystem) {   
  18.         fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);   
  19.     }   
  20.       
  21.     function gotFileEntry(fileEntry) {   
  22.         fileEntry.createWriter(gotFileWriter, fail);   
  23.     }    
  24.       
  25.     function gotFileWriter(writer) {   
  26.         writer.onwrite = function(evt) {   
  27.             console.log("write success");   
  28.         };   
  29.         writer.write("some sample text");   
  30.         // 文件当前内容是“some sample text”  
  31.         writer.truncate(11);   
  32.         // 文件当前内容是“some sample”   
  33.         writer.seek(4);   
  34.         // 文件当前内容依然是“some sample”,但是文件的指针位于“some”的“e”之后  
  35.         writer.write(" different text");   
  36.         // 文件的当前内容是“some different text”  
  37.     }    
  38.       
  39.     function fail(error) {   
  40.         console.log(error.code);   
  41.     }    
  42.   
  43. </script>  
  44. </head>  
  45. <body>  
  46.     <h1>Example</h1>  
  47.     <p>Write File</p>  
  48. </body>  
  49. </html>  
复制代码

FileError 
任何File API的方法发生错误时,错误属性都被设置为一个FileError对象。
属性:

  • code: 一个在下面常量列表中定义好的错误代码。

常量:

    • FileError.NOT_FOUND_ERR:没有找到相应的文件或目录的错误。(W3C File System API)
    • FileError.SECURITY_ERR:所有没被其他错误类型所涵盖的安全错误,包括:当前文件在Web应用中被访问是不安全的;对文件资源过多的访问等。(W3C File System API)
    • FileError.ABORT_ERR:中止错误。
    • FileError.NOT_READABLE_ERR:文件或目录无法读取的错误,通常是由于另外一个应用已经获取了当前文件的引用并使用了并发锁。(W3C File System API)
    • FileError.ENCODING_ERR:编码错误。
    • FileError.NO_MODIFICATION_ALLOWED_ERR:修改拒绝的错误,当试图写入一个底层文件系统状态决定其不能修改的文件或目录时。(W3C File System API)
    • FileError.INVALID_STATE_ERR:无效状态错误。
    • FileError.SYNTAX_ERR:语法错误,用于File Writer对象。(W3C File System API)
    • FileError.INVALID_MODIFICATION_ERR:非法的修改请求错误,例如同级移动(将一个文件或目录移动到它的父目录中)时没有提供和当前名称不同的名称时。(W3C File System API)
    • FileError.QUOTA_EXCEEDED_ERR:超
posted @ 2014-03-20 12:08  huidaoli  阅读(234)  评论(0编辑  收藏  举报