PhoneGap API介紹:File

本文將介紹PhoneGap API——File:經過JavaScript截獲本地文件系統。File是用於讀取、寫入和瀏覽文件系統層次結構的PhoneGap API。javascript

對象php

DirectoryEntry html

  • 該對象表明文件系統中的一個目錄,W3C的目錄和系統規範對其進行了定義。

屬性java

  • 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併發

  • 查找目錄的元數據。

參數app

  • successCallback:獲取元數據successCallback:獲取元數據成功後回調此函數,參數爲一個Metadata 對象。(函數類型)
  • errorCallback:試圖檢索元數據發生錯誤的時候回調此函數,參數爲一個FileError對象。(函數類型)

簡單的範例函數

    function success(metadata) {     
        console.log("Last Modified:" + metadata.modificationTime);     
    } 
     
    function fail(error) {     
        alert(error.code);     
    } 
     
    // 請求這個條目的元數據對象     
    entry.getMetadata(success, fail); 

 

moveTo

  • 移動一個目錄到文件系統中不一樣的位置。在嘗試進行如下操做時會發生錯誤:
  • 移動目錄到其自身,或者移動到其任意深度的任意子目錄中;
  • 同級移動(將一個目錄移動到它的父目錄中)時沒有提供和當前名稱不一樣的名稱;
  • 移動目錄到一個文件所佔用的路徑;
  • 移動目錄到一個非空目錄所佔用的路徑。
  • 另外,嘗試移動一個目錄到另外一個已經存在的空目錄上時,系統會嘗試刪除並替換已存在的目錄。

參數

  • parent:將目錄對象移動到的父級目錄。(DirectoryEntry類型)
  • newName:目錄的新名字。若是沒有指定,默認爲當前名字。(DOMString類型)
  • successCallback:移動成功後調用的回調函數,參數爲移動後的新目錄的DirectoryEntry對象。(函數類型)
  • errorCallback:試圖移動目錄發生錯誤時調用的回調函數,參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(entry) { 
        console.log("New Path:" + entry.fullPath); 
    } 
     
    function fail(error) { 
        alert(error.code); 
    } 
     
    function moveDir(entry) { 
        var parent = document.getElementById('parent').value; 
        newName = document.getElementById('newName').value; 
        parentEntry = new DirectoryEntry({fullPath: parent}); 
     
           // 移動目錄到一個新目錄,並將其重命名 
        entry.moveTo(parentEntry, newName, success, fail); 
    } 

 

copyTo

  • 拷貝一個目錄到文件系統中不一樣的位置。在嘗試進行如下操做時會發生錯誤:
  • 拷貝一個目錄到其任意深度的子目錄中;
  • 同級拷貝(將一個目錄拷貝到它的父目錄中)時沒有提供和當前名稱不一樣的名稱;
  • 目錄老是遞歸操做 — 也就是說,會拷貝目錄中的全部內容。

參數

  • parent:將目錄對象拷貝到的父級目錄。(DirectoryEntry類型)
  • newName:目錄的新名稱。若是沒有指定,默認爲當前名字。(DOMString類型)
  • successCallback:拷貝成功後調用的回調函數,參數爲拷貝後的新目錄的DirectoryEntry對象。(函數類型)
  • errorCallback:試圖拷貝目錄發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function win(entry) { 
        console.log("New Path:" + entry.fullPath); 
    } 
     
    function fail(error) { 
        alert(error.code); 
    } 
     
    function copyDir(entry) { 
        var parent = document.getElementById('parent').value, 
            newName = document.getElementById('newName').value, 
            parentEntry = new DirectoryEntry({fullPath: parent}); 
     
       // 拷貝目錄到一個新的目錄,並將其重命名 
       entry.copyTo(parentEntry, newName, success, fail); 
    } 

 

toURI

  • 返回一個用於定位該文件的URI。

簡單的範例

    // 請求此條目的URI 
    var uri = entry.toURI(); 
    console.log(uri); 

 

remove

  • 刪除一個目錄。在嘗試進行如下操做時會發生錯誤:
  • 刪除一個非空目錄;
  • 刪除文件系統的根目錄。

參數

  • successCallback:目錄刪除成功後調用的回調函數,無參數。(函數類型)
  • errorCallback:試圖刪除目錄發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(entry) { 
        console.log("Removal succeeded"); 
    } 
     
    function fail(error) { 
        alert('Error removing directory: ' + error.code); 
    } 
     
    // 移除這個目錄 
    entry.remove(success, fail); 

 

getParent

  • 查找包含當前目錄的父級DirectoryEntry。

參數

  • successCallback: 查找成功後調用此回調函數,參數爲當前目錄的父級DirectoryEntry對象。(函數類型)
  • errorCallback:試圖得到當前目錄的父級DirectoryEntry對象發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(parent) { 
        console.log("Parent Name: " + parent.name); 
    } 
     
    function fail(error) { 
        alert('Failed to get parent directory: ' + error.code); 
    } 
     
     
    // 得到父級DirectoryEntry對象 
    entry.getParent(success, fail); 

 

createReader

  • 創建一個新的DirectoryReader對象用來讀取目錄的全部條目。

簡單的範例

  1. // 建立一個DirectoryReader對象 
  2. var directoryReader = entry.createReader(); 

getDirectory

  • 建立新的目錄或查詢一個存在的目錄,在嘗試進行如下操做時會發生錯誤:
  • 建立一個直屬父級目錄尚不存在的目錄。

參數

  • path:查找或建立的目錄路徑,能夠是一個絕對路徑或者是對應當前DirectoryEntry的相對路徑。(DOMString類型)
  • options:用於指定若是查找的目錄不存在時是否建立該目錄的選項。(Flags類型)
  • successCallback:獲取成功後調用的回調函數,參數爲查找到或建立的DirectoryEntry對象。(函數類型)
  • errorCallback:建立或查找目錄發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

function success(parent) { 
    console.log("Parent Name:" + parent.name); 
} 
 
function fail(error) { 
    alert("Unable to create new directory:"+ error.code); 
} 
 
// 檢索一個已存在的目錄,若是該目錄不存在時則建立該目錄 
entry.getDirectory(「newDir」, {create: true, exclusive: false}, success, fail);

 

getFile

  • 建立新的文件或查詢一個存在的文件,在嘗試進行如下操做時會發生錯誤:
  • 建立一個直屬父級目錄尚不存在的文件。

參數

  • path:查找或建立的文件路徑,能夠是一個絕對路徑或者是對應當前DirectoryEntry的相對路徑。(DOMString類型)
  • options:用於指定若是查找的文件不存在時是否建立該文件的選項。(Flags類型)
  • successCallback:獲取成功後調用的回調函數,參數爲查找到或建立的FileEntry對象。(函數類型)
  • errorCallback:建立或查找文件發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

function success(parent) { 
    console.log("Parent Name:" + parent.name); 
} 
     
function fail(error) { 
    alert("Failed to retrieve file:" + error.code); 
} 
     
// 檢索一個已存在的文件,若是該文件不存在時則建立該文件 
entry.getFile(「newFile.txt」, {create: true, exclusive: false}, success, fail);

 

removeRecursively

  • 刪除一個目錄及其全部內容。在刪除過程當中發生錯誤時(例如:試圖刪除一個包含不可刪除文件的目錄),該目錄中的部份內容可能已經被刪除。在嘗試進行如下操做時會發生錯誤:
  • 刪除filesystem的根目錄。

參數

  • successCallback:當DirectoryEntry刪除成功後調用的回調函數,無參數。(函數類型)
  • errorCallback:當試圖刪除DirectoryEntry發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    console.log("Remove Recursively Succeeded"); 
} 
 
function fail(error) { 
    alert("Failed to remove directory or it's contents:" + error.code); 
} 
 
// 刪除此目錄及其全部內容 
entry.removeRecursively(success, fail); 

 

DirectoryReader

  • 包含目錄中全部的文件和子目錄的列表對象,W3C的目錄和系統規範對其進行了定義。

方法

  • readEntries:讀取目錄中的全部條目。

支持的平臺

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

readEntries

  • 讀取當前目錄中的全部條目。

參數

  • successCallback:讀取成功後調用的回調函數,參數爲一個包含FileEntry和DirectoryEntry的對象數組。(函數類型)
  • errorCallback:檢索目錄列表發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

 

    function success(entries) { 
        var i; 
        for(i=0;i< entries.length;i++) { 
            console.log(entries[i].name); 
        } 
    } 
     
    function fail(error) { 
        alert("Failed to list directory contents:" + error.code); 
    } 
     
    // 建立一個目錄讀取器 
    var directoryReader = dirEntry.createReader(); 
     
    // 獲取目錄中的全部條目 
    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簡單的範例

    function onSuccess(fileSystem) { 
        console.log(fileSystem.name); 
        console.log(fileSystem.root.name); 
    } 
     
    // 請求當前持久化的文件系統 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, null); 

 

完整的範例

    <!DOCTYPE html> 
    <html> 
    <head>     
    <title>File System Example</title> 
     
    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     
        // 等待加載PhoneGap 
        document.addEventListener("deviceready", onDeviceReady, false); 
         
        // PhoneGap加載完畢 
        function onDeviceReady() { 
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 
        } 
         
        function onFileSystemSuccess(fileSystem) { 
            console.log(fileSystem.name); 
            console.log(fileSystem.root.name); 
        } 
         
        function fail(evt) { 
            console.log(evt.target.error.code); 
        } 
     
    </script> 
    </head> 
    <body> 
        <h1>Example</h1> 
        <p>File System</p> 
    </body> 
    </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對象。(函數類型)

簡單的範例

function success(metadata) { 
    console.log("Last Modified:" + metadata.modificationTime); 
} 
 
function fail(error) { 
    alert(error.code); 
} 
 
// 請求這個條目的元數據對象 
entry.getMetadata(success, fail);

 

moveTo

  • 移動一個文件到文件系統中不一樣的位置。在嘗試進行如下操做時會發生錯誤:
  • 同級移動(將一個文件移動到它的父目錄中)時沒有提供和當前名稱不一樣的名稱;
  • 移動文件到一個目錄所佔用的路徑;
  • 此外,嘗試移動一個文件到另外一個已經存在的空文件上時,系統會嘗試刪除並替換已存在的文件。

參數

  • parent:將文件對象移動到的父級目錄。(DirectoryEntry類型)
  • newName:文件的新名稱。若是沒有指定,默認爲當前名字。(DOMString類型)
  • successCallback:移動成功後調用的回調函數,參數爲移動後新文件的FileEntry對象。(函數類型)
  • errorCallback:試圖移動文件發生錯誤時調用的回調函數,參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(entry) { 
        console.log("New Path: " + entry.fullPath); 
    } 
     
    function fail(error) { 
        alert(error.code); 
    } 
     
    function moveFile(entry) { 
        var parent = document.getElementById('parent').value, 
            parentEntry = new DirectoryEntry({fullPath: parent}); 
     
        // 移動文件到一個新目錄,並將其重命名 
           entry.moveTo(parentEntry, "newFile.txt", success, fail); 
    } 

 

copyTo

  • 拷貝一個文件到文件系統中新的位置。在嘗試進行如下操做時會發生錯誤:
  • 同級拷貝(將一個文件拷貝到它的父目錄中)時沒有提供和當前名稱不一樣的名稱;

參數

  • parent:將文件對象拷貝到的父級目錄。(DirectoryEntry類型)
  • newName:文件的新名字。若是沒有指定,默認爲當前名字。(DOMString類型)
  • successCallback:拷貝成功後調用的回調函數,參數爲拷貝後新文件的FileEntry對象。(函數類型)
  • errorCallback:試圖拷貝文件發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function win(entry) { 
        console.log("New Path: " + entry.fullPath); 
    } 
     
    function fail(error) { 
        alert(error.code); 
    } 
     
    function copyFile(entry) { 
        var parent = document.getElementById('parent').value, 
            parentEntry = new DirectoryEntry({fullPath: parent}); 
     
        // 拷貝文件到一個新的目錄,並將其重命名 
        entry.copyTo(parentEntry, "file.copy", success, fail); 
    } 

 

toURI

  • 返回一個用於定位該文件的URI。

簡單的範例

    // 請求此條目的URI 
    var uri = entry.toURI(); 
    console.log(uri); 

 

remove

  • 刪除一個文件。

參數

  • successCallback:文件刪除成功後調用的回調函數,無參數。(函數類型)
  • errorCallback:試圖刪除文件發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(entry) { 
        console.log("Removal succeeded"); 
    } 
     
    function fail(error) { 
        alert('Error removing file: ' + error.code); 
    } 
     
    // 移除該文件 
    entry.remove(success, fail); 

 

getParent

  • 查找包含當前文件的父級DirectoryEntry。

參數

  • successCallback:查找成功後調用的回調函數,參數爲當前文件的父級DirectoryEntry對象。(函數類型)
  • errorCallback:試圖得到當前文件的父級DirectoryEntry對象發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(parent) { 
        console.log("Parent Name: " + parent.name); 
    } 
     
    function fail(error) { 
        alert(error.code); 
    } 
     
    // 得到父級DirectoryEntry對象 
    entry.getParent(success, fail); 

 

createWriter

  • 建立一個FileEntry所表明的文件相關的FileWriter對象。

參數

  • successCallback:建立成功後調用的回調函數,參數爲FileWriter對象。(函數類型)
  • errorCallback:試圖建立FileWriter發生錯誤時調用的回調函數,其參數爲一個FileError對象。(函數類型)

簡單的範例

function success(writer) { 
    writer.write("Some text to the file"); 
} 
 
function fail(error) { 
    alert(error.code); 
} 
 
// 建立一個用於寫文件的FileWriter對象 
entry.createWriter(success, fail); 

 

file

  • 返回表示這個FileEntry所表明文件的當前狀態的File對象。

參數

  • successCallback:獲取成功後調用的回調函數,其參數爲一個File對象。(函數類型)
  • errorCallback:建立File對象發生錯誤時調用的回調函數(例如:底層的文件已再也不存在),其參數爲一個FileError對象。(函數類型)

簡單的範例

    function success(file) { 
        console.log("File size: " + file.size); 
    } 
     
    function fail(error) { 
        alert("Unable to retrieve file properties: " + error.code); 
    } 
     
    // 得到此文件的屬性 
    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:讀取的文件對象

簡單的範例

unction win(file) { 
    var reader = new FileReader(); 
    reader.onloadend = function(evt) { 
        console.log("read success"); 
        console.log(evt.target.result); 
    }; 
    reader.readAsDataURL(file); 
}   
 
var fail = function(evt) { 
    console.log(error.code); 
}; 
 
entry.file(win, fail); 

 

ReadAsText:

參數

  • file:讀取的文件對象。
  • encoding:用來編碼文件內容的編碼格式,默認值爲UTF8。

簡單的範例

    function win(file) { 
        var reader = new FileReader(); 
        reader.onloadend = function(evt) { 
            console.log("read success"); 
            console.log(evt.target.result); 
        }; 
        reader.readAsText(file); 
    }   
     
    var fail = function(evt) { 
        console.log(error.code); 
    }; 
     
    entry.file(win, fail); 

 

Abort 簡單的範例

    function win(file) { 
        var reader = new FileReader(); 
        reader.onloadend = function(evt) { 
            console.log("read success"); 
            console.log(evt.target.result); 
        }; 
        reader.readAsText(file); 
        reader.abort(); 
    } 
     
    function fail(error) { 
        console.log(error.code); 
    }   
     
    entry.file(win, fail); 

 

完整的範例

    <!DOCTYPE html> 
    <html> 
    <head> 
    <title>FileReader Example</title> 
     
    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     
        // 等待加載PhoneGap 
         
        document.addEventListener("deviceready", onDeviceReady, false); 
         
        // PhoneGap加載完畢 
         
        function onDeviceReady() { 
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
        }   
         
        function gotFS(fileSystem) { 
            fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail); 
        }   
         
        function gotFileEntry(fileEntry) { 
            fileEntry.file(gotFile, fail); 
        }   
         
        function gotFile(file){ 
            readDataUrl(file); 
            readAsText(file); 
        }   
         
        function readDataUrl(file) { 
            var reader = new FileReader(); 
            reader.onloadend = function(evt) { 
                console.log("Read as data URL"); 
                console.log(evt.target.result); 
            }; 
            reader.readAsDataURL(file); 
        }   
         
        function readAsText(file) { 
            var reader = new FileReader(); 
            reader.onloadend = function(evt) { 
                console.log("Read as text"); 
                console.log(evt.target.result); 
            }; 
            reader.readAsText(file); 
        }   
         
        function fail(evt) { 
            console.log(evt.target.error.code); 
        }   
     
    </script> 
    </head> 
    <body> 
        <h1>Example</h1> 
        <p>Read File</p> 
    </body> 
    </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的簡單範例

    function win(writer) { 
        // 快速將文件指針指向文件的尾部 
        writer.seek(writer.length);   
    };   
     
    var fail = function(evt) { 
        console.log(error.code); 
    };   
     
    entry.createWriter(win, fail); 

 

Truncate 的簡單範例

    function win(writer) { 
        writer.truncate(10); 
    } 
     
    var fail = function(evt) { 
        console.log(error.code); 
    } 
     
    entry.createWriter(win, fail); 

 

Write 的簡單範例

    function win(writer) { 
        writer.onwrite = function(evt) { 
            console.log("write success"); 
        }; 
           writer.write("some sample text"); 
    };   
     
    var fail = function(evt) { 
        console.log(error.code); 
    };   
     
    entry.createWriter(win, fail); 

 

Append 的簡單範例

    function win(writer) { 
        writer.onwrite = function(evt) { 
            console.log("write success"); 
        }; 
        writer.seek(writer.length); 
        writer.write("appended text); 
    }   
     
    var fail = function(evt) { 
        console.log(error.code); 
    };   
     
    entry.createWriter(win, fail); 
    Abort 的簡單範例: 
     
    function win(writer) { 
        writer.onwrite = function(evt) { 
            console.log("write success"); 
        }; 
        writer.write("some sample text"); 
        writer.abort(); 
    }   
     
    var fail = function(evt) { 
        console.log(error.code); 
    }; 
     
    entry.createWriter(win, fail); 

 

完整的範例

    <!DOCTYPE html> 
    <html> 
    <head> 
    <title>FileWriter Example</title>   
     
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js"></script> 
    <script type="text/javascript" charset="utf-8">   
     
        // 等待加載PhoneGap 
        document.addEventListener("deviceready", onDeviceReady, false); 
         
        // PhoneGap加載完畢 
        function onDeviceReady() { 
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
        }   
         
        function gotFS(fileSystem) { 
            fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail); 
        } 
         
        function gotFileEntry(fileEntry) { 
            fileEntry.createWriter(gotFileWriter, fail); 
        }   
         
        function gotFileWriter(writer) { 
            writer.onwrite = function(evt) { 
                console.log("write success"); 
            }; 
            writer.write("some sample text"); 
            // 文件當前內容是「some sample text」 
            writer.truncate(11); 
            // 文件當前內容是「some sample」 
            writer.seek(4); 
            // 文件當前內容依然是「some sample」,可是文件的指針位於「some」的「e」以後 
            writer.write(" different text"); 
            // 文件的當前內容是「some different text」 
        }   
         
        function fail(error) { 
            console.log(error.code); 
        }   
     
    </script> 
    </head> 
    <body> 
        <h1>Example</h1> 
        <p>Write File</p> 
    </body> 
    </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:超過配額錯誤,當操做會致使應用程序超過系統所分配的存儲配額時。(W3C File System API)
  • FileError.TYPE_MISMATCH_ERR:類型不匹配錯誤,當試圖查找文件或目錄而請求的對象類型錯誤時。(例如:當用戶請求一個FileEntry是一個DirectoryEntry對象)(W3C File System API)
  • FileError.PATH_EXISTS_ERR:路徑已存在錯誤,當試圖建立路徑已經存在的文件或目錄時。(W3C File System API)

說明

  • FileError對象是全部File API的錯誤回調函數的惟一參數。開發者必須根據錯誤代碼屬性決定錯誤類型。

FileTransfer

  • FileTransfer是一個容許你向服務器上傳文件的對象。

屬性

  • N/A

方法

  • upload:上傳一個文件到服務器。

詳述

  • FileTransfer對象提供了一種將文件上傳到遠程服務器的方法,經過HTTP多部分POST請求,同時支持HTTP和HTTPS協議。能夠傳遞一個由FileUploadOptions對象設定的可選參數給upload方法。上傳成功後,系統會調用成功回調函數並傳遞一個FileUploadResult對象。若是出現錯誤,系統會調用錯誤回調函數並傳遞一個FileTransferError對象。

支持的平臺

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

簡單的範例

    // !! 假設變量fileURI包含一個指向設備上一個文本文件的有效URI 
     
    var win = function(r) { 
        console.log("Code = " + r.responseCode); 
        console.log("Response = " + r.response); 
        console.log("Sent = " + r.bytesSent); 
    }   
     
    var fail = function(error) { 
        alert("An error has occurred: Code = " = error.code); 
    }   
     
    var options = new FileUploadOptions(); 
    options.fileKey="file"; 
    options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1); 
    options.mimeType="text/plain";   
     
    var params = new Object(); 
    params.value1 = "test"; 
    params.value2 = "param";   
     
    options.params = params;   
     
    var ft = new FileTransfer(); 
    ft.upload(fileURI, "http://some.server.com/upload.php", win, fail, options); 

 

完整的範例

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
    <html> 
    <head> 
    <title>File Transfer Example</title>   
     
    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.min.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     
        // 等待加載PhoneGap 
        document.addEventListener("deviceready", onDeviceReady, false); 
         
        // PhoneGap加載完成 
        function onDeviceReady() { 
     
            // 從指定來源檢索圖像文件位置 
            navigator.camera.getPicture(uploadPhoto, 
                                        function(message) { alert('get picture failed'); }, 
                                        { quality: 50,   
                                        destinationType: navigator.camera.DestinationType.FILE_URI, 
                                        sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY } 
                                        ); 
        }   
     
        function uploadPhoto(imageURI) { 
            var options = new FileUploadOptions(); 
            options.fileKey="file"; 
            options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1); 
            options.mimeType="image/jpeg"; 
     
            var params = new Object(); 
            params.value1 = "test"; 
            params.value2 = "param";   
     
            options.params = params;   
     
            var ft = new FileTransfer(); 
            ft.upload(imageURI, "http://some.server.com/upload.php", win, fail, options); 
        } 
     
        function win(r) { 
            console.log("Code = " + r.responseCode); 
            console.log("Response = " + r.response); 
            console.log("Sent = " + r.bytesSent); 
        } 
     
        function fail(error) { 
            alert("An error has occurred: Code = " = error.code); 
        }   
     
    </script> 
    </head> 
    <body> 
        <h1>Example</h1> 
        <p>Upload File</p> 
    </body> 
    </html> 

 

FileUploadOptions

  • 一個FileUploadOptions對象能夠做爲參數傳遞給FileTransfer對象的上傳文件方法,以指定上傳腳本的其它參數。

屬性

  • fileKey:表單元素的name值,若是沒有設置默認爲 「file」 。(DOMString類型)
  • fileName:你但願文件存儲到服務器所用的文件名,若是沒有設置默認爲 「image.jpg」。(DOMString類型)
  • mimeType:正在上傳數據所使用的mime類型,若是沒有設置默認爲「image/jpeg」。(DOMString類型)
  • params:經過HTTP請求發送到服務器的一系列可選鍵/值對。(對象類型)

說明

  • 一個FileUploadOptions對象能夠做爲參數傳遞給FileTransfer對象的上傳文件方法,以指定上傳腳本的其餘參數。

FileUploadResult

  • FileTransfer的upload方法調用成功後,經過回調函數將一個FileUploadResult對象返回給用戶。

屬性

  • bytesSent:上傳文件時向服務器所發送的字節數。(長整型)
  • responseCode:服務器端返回的HTTP響應代碼。(長整型)
  • response:服務器端返回的HTTP響應。(DOMString類型)

說明

  • FileTransfer方法調用成功後,經過回調函數將一個FileUploadResult對象返回給用戶。

iOS的特異狀況

  • iOS的成功回調函數返回的FileUploadResult對象中不包含responseCode和bytesSent的值。

FileTransferError

  • 當文件傳輸過程當中發生錯誤時,經過錯誤回調函數返回一個FileTransferError對象。

屬性

  • code:一個在下面常量列表中定義的錯誤代碼。(整數類型)

常量

  • FileTransferError.FILE_NOT_FOUND_ERR:文件未找到錯誤。
  • FileTransferError.INVALID_URL_ERR:無效的URL錯誤。
  • FileTransferError.CONNECTION_ERR:鏈接錯誤。

說明

  • 當文件傳輸過程當中發生錯誤時,經過錯誤回調函數返回一個FileTransferError對象。

Flags

  • 該對象用於爲DirectoryEntry對象的getFile和getDirectory方法提供參數,這兩個方法分別用於查找或建立文件和目錄。

屬性

  • create: 用於指示若是文件或目錄不存在時是否進行建立。(布爾類型)
  • exclusive:就其自己而言沒有任何效果。和create一塊兒使用時,當要建立的目標路徑已經存在,它會致使文件或目錄建立失敗。(布爾類型)

支持的平臺

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

簡單的範例

    // 獲取data目錄,若是不存在則建立該目錄。 
    dataDir = fileSystem.root.getDirectory("data", {create: true}); 
         
    // 建立lockfile.txt,當且僅當該文件不存在時。 
    lockFile = dataDir.getFile("lockfile.txt", {create: true, exclusive: true}); 

 

LocalFileSystem

  • 該對象提供一個方法來得到根文件系統。

方法

  • requestFileSystem:請求一個filesystem對象。(函數類型)
  • resolveLocalFileSystemURI:經過本地URI參數檢索DirectoryEntry或FileEntry。(函數類型)

常量

  • LocalFileSystem.PERSISTENT:用於不通過應用程序或者用戶許可就沒法經過用戶代理移除的存儲類型。
  • LocalFileSystem.TEMPORARY:用於不須要保證持久化的存儲類型。

詳述

  • LocalFileSystem對象的方法定義在window對象內。

支持的平臺

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

Request File System簡單的範例

    function onSuccess(fileSystem) { 
        console.log(fileSystem.name); 
    } 
         
    // 請求持久化的文件系統 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError); 
    Resolve Local File System URI的簡單範例: 
     
    function onSuccess(fileEntry) { 
        console.log(fileEntry.name); 
    } 
         
    window.resolveLocalFileSystemURI("file:///example.txt", onSuccess, onError); 

 

完整的範例

    <!DOCTYPE html> 
    <html> 
    <head>     
    <title>Local File System Example</title>   
         
    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
             
        // 等待加載PhoneGap 
        document.addEventListener("deviceready", onDeviceReady, false); 
             
        // PhoneGap加載完畢 
        function onDeviceReady() { 
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 
            window.resolveLocalFileSystemURI("file:///example.txt", onResolveSuccess, fail); 
        }   
             
        function onFileSystemSuccess(fileSystem) { 
            console.log(fileSystem.name); 
        }   
             
        function onResolveSuccess(fileEntry) { 
            console.log(fileEntry.name); 
        }   
             
        function fail(evt) { 
            console.log(evt.target.error.code); 
        }   
         
    </script> 
    </head> 
    <body> 
        <h1>Example</h1> 
        <p>Local File System</p> 
    </body> 
    </html> 

 

Metadata

  • 這個接口提供一個文件或目錄的狀態信息。

屬性

  • modificationTime:文件或目錄最後的修改時間。(日期類型)

詳述

  • Metadata對象表明一個文件或目錄的狀態信息,你能夠經過調用DirectoryEntry或FileEntery的getMetadata方法來得到Metadata對象的實例。

支持的平臺

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

簡單的範例

    function win(metadata) { 
        console.log("Last Modified: " + metadata.modificationTime); 
    } 
         
    // 請求此條目的metadata對象 
    entry.getMetadata(win, null); 
相關文章
相關標籤/搜索