1. 程式人生 > >HTML5+規範:IO(管理本地檔案系統)

HTML5+規範:IO(管理本地檔案系統)

IO模組管理本地檔案系統,用於對檔案系統的目錄瀏覽、檔案的讀取、檔案的寫入等操作。通過plus.io可獲取檔案系統管理物件。

PRIVATE_WWW: 應用執行資源目錄常量

PRIVATE_DOC: 應用私有文件目錄常量

PUBLIC_DOCUMENTS: 程式公用文件目錄常量

PUBLIC_DOWNLOADS: 程式公用下載目錄常量

一、常量

1、PRIVATE_WWW

應用執行資源目錄常量:plus.io.PRIVATE_WWW;

說明:Number型別,本地檔案系統常量,Number型別,固定值1。應用執行資源目錄,僅本應用可訪問。為了確保應用資源的安全性,此目錄只可讀。

平臺支援

Android - ALL (支援): Android平臺應用資源是放到apk的assets目錄中,安裝到裝置後無法列舉,為了能夠正常列舉訪問此目錄,需要將應用設定為釋放資源模式(在manifest.json中將runmode值設定為liberate),這樣程式在第一次執行時將資源釋放到sdcard中。 通常在裝置上的目錄為“/sdcard/Android/data/%PACKAGENAME%/apps/%APPID%/www”,其中%PACKAGENAME%是程式的包名、%APPID%是應用的標識,如“/sdcard/Android/data/io.dcloud.HelloH5/apps/HelloH5/www

”。

iOS - ALL (支援): iOS平臺應用資源是放到應用的沙盒目錄中,安裝到裝置後放到應用沙盒目錄的“/DCloud_Pandora.app/Pandora/apps/%APPID%/www”,如“/DCloud_Pandora.app/Pandora/apps/HBuilder/www”。 如將應用設定為釋放資源模式(在manifest.json中將runmode值設定為liberate),程式在第一次執行時將資源釋放到應用沙盒目錄下的Library中“/Library/Pandora/apps/%APPID%/www”,如“/Library/Pandora/apps/HBuilder/www”。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PRIVATE_WWW, function( fs ) {
// 可通過fs操作PRIVATE_WWW檔案系統
// ......
}, function ( e ) {
alert( "Request file system failed: " + e.message );
} );
}
</script>
</head>
<body>
Local file system
</body>
</html>


2、PRIVATE_DOC

應用私有文件目錄常量:plus.io.PRIVATE_DOC;

說明:Number 型別,本地檔案系統常量,Number型別,固定值2。應用私有文件目錄,僅本應用可讀寫。

平臺支援

  Android - ALL (支援): 通常在裝置上的目錄為“/sdcard/Android/data/%PACKAGENAME%/.%APPID%/apps/%APPID%/doc”,其中%PACKAGENAME%是程式的包名、%APPID%是應用的標識,如“/sdcard/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc”。

iOS - ALL (支援): 通常在裝置應用沙盒目錄下“/Library/Pandora/apps/%APPID%/doc”,其中%APPID%是應用的標識,,如“/Library/Pandora/apps/HBuilder/doc

”。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PRIVATE_DOC, function( fs ) {
// 可通過fs操作PRIVATE_DOC檔案系統
// ......
}, function ( e ) {
alert( "Request file system failed: " + e.message );
} );
}
</script>
</head>
<body>
Local file system
</body>
</html>


3、PUBLIC_DOCUMENTS

程式公用文件目錄常量:plus.io.PUBLIC_DOCUMENTS;

說明:Number 型別,本地檔案系統常量,Number型別,固定值3。程式公用文件目錄,所有應用可讀寫。

平臺支援

Android - ALL (支援):通常在裝置上的目錄為“/sdcard/Android/data/%PACKAGENAME%/.%APPID%/documents”,其中%PACKAGENAME%是程式的包名、%APPID%是應用的標識,如“/sdcard/Android/data/io.dcloud.HBuilder/.HBuilder/documents”。

iOS - ALL (支援): 通常在裝置應用沙盒目錄下“/Library/Pandora/documents”。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PUBLIC_DOCUMENTS, function( fs ) {
// 可通過fs操作PUBLIC_DOCUMENTS檔案系統 
// ......
}, function ( e ) {
alert( "Request file system failed: " + e.message );
} );
}
</script>
</head>
<body>
Local file system
</body>
</html>


4、PUBLIC_DOWNLOADS

程式公用下載目錄常量:plus.io.PUBLIC_DOWNLOADS;

說明:Number 型別,本地檔案系統常量,Number型別,固定值4。程式公用下載目錄,所有應用可讀寫。

平臺支援

 Android - ALL (支援): 通常在裝置上的目錄為“/sdcard/Android/data/%PACKAGENAME%/.%APPID%/downloads”,其中%PACKAGENAME%是程式的包名、%APPID%是應用的標識,如“/sdcard/Android/data/io.dcloud.HBuilder/.HBuilder/downloads”。

iOS - ALL (支援): 通常在裝置應用沙盒目錄下“/Library/Pandora/downloads”。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PUBLIC_DOWNLOADS, function( fs ) {
// 可通過fs操作PUBLIC_DOWNLOADS檔案系統
// ......
}, function ( e ) {
alert( "Request file system failed: " + e.message );
} );
}
</script>
</head>
<body>
Local file system
</body>
</html>


二、方法

requestFileSystem: 請求本地檔案系統物件

resolveLocalFileSystemURL: 通過URL引數獲取目錄物件或檔案物件

convertLocalFileSystemURL: 將本地URL路徑轉換成平臺絕對路徑

convertAbsoluteFileSystem: 將平臺絕對路徑轉換成本地URL路徑

1、requestFileSystem

請求本地檔案系統物件:void plus.io.requestFileSystem( type, succesCB, errorCB )

說明:獲取指定的檔案系統,可通過type指定獲取檔案系統的型別。 獲取指定的檔案系統物件成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

(1)、type: ( Number ) 必選 本地檔案系統常量。可取plus.io下的常量,如plus.io.PRIVATE_DOC、plus.io.PUBLIC_DOCUMENTS等。

(2)、succesCB: ( FileSystemSuccessCallback ) 必選 請求檔案系統成功的回撥。

(3)、errorCB: ( FileErrorCallback ) 可選 請求檔案系統失敗的回撥

   返回值:void : 無

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PRIVATE_WWW, function( fs ) {
// 可通過fs進行檔案操作
alert( "Request file system success!" );
}, function ( e ) {
alert( "Request file system failed: " + e.message );
} );
}
</script>
</head>
<body>
Request file system
</body>
</html>

2、resolveLocalFileSystemURL

通過URL引數獲取目錄物件或檔案物件void plus.io.resolveLocalFileSystemURL( url, succesCB, errorCB );

說明:快速獲取指定的目錄或檔案操作物件,如通過URL值“_www/test.html”可直接獲取檔案操作物件。 url值可支援相對路徑URL、本地路徑URL、網路路徑URL(http://localhost:13131/開頭)。 獲取指定的檔案或目錄操作物件成功通過succesCB回撥返回,如果指定URL路徑或檔案不存在則失敗通過errorCB回撥返回。

引數:

    (1)、url : ( DOMString ) 必選 要操作檔案或目錄的URL地址

    (2)、succesCB: ( FileResolveSuccessCallback ) 必選 獲取操作檔案或目錄物件成功的回撥函式

    (3)、errorCB: ( FileErrorCallback ) 可選 獲取操作檔案或目錄物件失敗的回撥函式

    返回值:void : 無

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.resolveLocalFileSystemURL( "_www/test.html", function( entry ) {
// 可通過entry物件操作test.html檔案 
entry.file( function(file){
var fileReader = new plus.io.FileReader();
alert("getFile:" + JSON.stringify(file));
fileReader.readAsText(file, 'utf-8');
fileReader.onloadend = function(evt) {
alert("11" + evt);
alert("evt.target" + evt.target);
alert(evt.target.result);
}
alert(file.size + '--' + file.name);
} );
}, function ( e ) {
alert( "Resolve file URL failed: " + e.message );
} );
}
</script>
</head>
<body>
Request file system
</body>
</html>

3、convertLocalFileSystemURL

將本地URL路徑轉換成平臺絕對路徑:String plus.io.convertLocalFileSystemURL( url );

說明:絕對路徑符合各平臺檔案路徑格式,通常用於Native.JS呼叫系統原生檔案操作API,也可以在前面新增“file://”後在html頁面中直接使用。

引數:url: ( String ) 必選 要轉換的檔案或目錄URL地址,URL地址必須是合法的路徑,如果地址不合法則返回null。

返回值:String : 轉換後在平臺路徑,在不同平臺或者不同裝置返回的值可能存在差異,如輸入url為“_doc/a.png”: Android平臺轉換後的路徑為“/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.png”; 在iOS平臺轉換後的路徑為“/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png”。

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady(){
var url="_www/index.html";
var path=plus.io.convertLocalFileSystemURL(url);
alert(path);
}
</script>
</head>
<body>
convertLocalFileSystemURL
</body>
</html>

4、convertAbsoluteFileSystem

將平臺絕對路徑轉換成本地URL路徑:String plus.io.convertAbsoluteFileSystem( path );

說明:絕對路徑符合各平臺檔案路徑格式,轉換後變成RelativeURL型別格式。 功能與convertLocalFileSystemURL方法相反,將絕對路徑轉換成相對路徑。

引數:path: ( String ) 必選 要轉換的平臺絕對路徑,絕對路徑必須是合法的路徑,如果絕對路徑不合法則返回null。

返回值:DOMString : 轉換後本地URL路徑

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady(){
var url="_www/index.html";
var path=plus.io.convertLocalFileSystemURL(url);
var newurl = plus.io.convertAbsoluteFileSystem(path);
alert(newurl); // 顯示值為“_www/index.html”
}
</script>
</head>
<body>
convertAbsoluteFileSystem
</body>
</html>

三、物件

DirectoryEntry: 檔案系統中的目錄物件,用於管理特定的本地目錄

DirectoryReader: 讀取目錄資訊物件,用於獲取目錄中包含的檔案及子目錄

File: 檔案系統中的檔案資料物件,用於獲取檔案的資料

FileEntry: 檔案系統中的檔案物件,用於管理特定的本地檔案

FileReader: 檔案系統中的讀取檔案物件,用於獲取檔案的內容

FileWriter: 檔案系統中的寫檔案物件,用於寫入檔案內容

FileSystem: 檔案系統物件,用於管理特定本地檔案目錄

Flags: JSON物件,獲取檔案操作的引數

Metadata: JSON物件,儲存檔案或目錄的狀態資訊物件

FileEvent: 檔案或目錄操作事件物件

URLType: 檔案路徑型別

RelativeURL: 相對路徑URL

LocalURL: 本地路徑URL

RemoteURL: 網路路徑URL

1、DirectoryEntry

檔案系統中的目錄物件,用於管理特定的本地目錄

1.1、屬性

   isFile: 操作物件的是否為檔案,DirectoryEntry物件固定其值為false

   isDirectory: 操作物件是否為目錄,DirectoryEntry物件固定其值為true

   name: 目錄操作物件的名稱,不包括路徑

   fullPath: 目錄操作物件的完整路徑,檔案系統的絕對路徑

   fileSystem: 檔案操作物件所屬的檔案系統物件,參考FileSystem

1.2、方法

(1)、getMetadata: 獲取目錄的屬性

      entry.getMetadata( successCB, errorCB, recursive );

說明:用於獲取檔案或目錄的屬性資訊。 獲取屬性資訊成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( MetadataSuccessCallback ) 必選 獲取檔案或目錄屬性資訊成功的回撥。

errorCB: ( FileErrorCallback) 必選 獲取檔案或目錄屬性資訊失敗的回撥。 recursive: ( Boolean ) 必選 是否遞迴計算目錄資訊,true為遞迴計算獲取資訊,false不遞迴計算獲取,預設值為false

返回值:void : 無。

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)。

示例:

// Request the metadata object for this entry
entry.getMetadata( function ( metadata ) {
plus.console.log("Last Modified: " + metadata.modificationTime);
}, function () {
alert( e.message );
} );

(2)、moveTo: 移動目錄

       entry.moveTo( parent, newName, succesCB, errorCB );

說明:以下情況移動目錄將會導致失敗: 將父目錄移動到子目錄中; 要移動到的目標目錄無效; 要移動到的目標路徑被檔案佔用; 要移動到的目標目錄已經存在並且不為空。 移動目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

parent: ( DirectoryEntry ) 必選 要移動到的目標目錄

newName: ( DOMString ) 可選 移動後的目錄名稱,預設為原始目錄名稱

succesCB: ( EntrySuccessCallback ) 可選 移動目錄成功的回撥函式,回撥函式中的引數儲存新的目錄物件。

errorCB: ( FileErrorCallback) 可選 移動目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

function moveDirecty(srcEntry,dstEntry) {
var newName = document.getElementById('newName').value,
// move the directory to a new directory and rename it
srcEntry.moveTo( dstEntry, newName, function( entry ) {
plus.console.log("New Path: " + entry.fullPath);
}, function ( e ) {
alert( e.message );
} );
}


(3)、copyTo: 拷貝目錄

entry.copyTo( parent, newName, succesCB, errorCB );

說明:以下情況拷貝目錄將會導致失敗: 將父目錄拷貝到子目錄中; 要拷貝到的目標目錄無效; 要拷貝到的目標路徑被檔案佔用; 要拷貝到的目標目錄已經存在並且不為空。 拷貝目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

parent: ( DirectoryEntry ) 必選 要拷貝到的目標目錄

newName: ( DOMString ) 可選 拷貝後的目錄名稱,預設為原始目錄名稱

succesCB: ( EntrySuccessCallback ) 可選 拷貝目錄成功的回撥函式

回撥函式中的引數儲存新的目錄物件。

errorCB: ( FileErrorCallback) 可選 拷貝目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

function copyDirecty(srcEntry,dstEntry){
var newName = document.getElementById('newName').value,
// copy the directory to a new directory and rename it
srcEntry.copyTo( dstEntry, newName, function( entry ){
plus.console.log("New Path: " + entry.fullPath);
}, function( e ){
alert( e.message );
} );
}


(4)、toURL: 獲取目錄路徑轉換為URL地址

           DOMString entry.toURL();

返回值:DOMString : 格式為相對路徑URL

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the URL for this directory
var dirURL = entry.toURL();
plus.console.log(dirURL);

(5)、toLocalURL: 獲取目錄路徑轉換為本地路徑URL地址

       DOMString entry.toLocalURL();

返回值:DOMString : 格式為本地路徑URL

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the local URL for this directory
var dirURL = entry.toLocalURL();

(6)、toRemoteURL: 獲取目錄路徑轉換為網路路徑URL地址

       OMString entry.toRemoteURL();

返回值:DOMString : URL地址格式為以“http://localhost:13131/”開頭的網路路徑。

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the remote URL for this directory
var dirURL = entry.toRemoteURL();
plus.console.log(dirURL);

(7)、remove: 刪除目錄

      entry.remove( succesCB, errorCB );

說明:以下情況刪除目錄將會導致失敗: 目錄中存在檔案; 刪除根目錄; 刪除目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 刪除目錄成功的回撥函式

回撥函式中無引數。

errorCB: ( FileErrorCallback) 可選 刪除目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// remove this directory
entry.remove( function ( entry ) {
plus.console.log( "Remove succeeded" );
}, function ( e ) {
alert( e.message );
} );

(8)、getParent: 獲取目錄所屬的父目錄

       entry.getParent( succesCB, errorCB );

說明:獲取父目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 獲取父目錄成功的回撥函式

errorCB: ( FileErrorCallback) 可選 獲取父目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the parent DirectoryEntry
entry.getParent( function ( entry ) {
plus.console.log( "Parent Name: " + entry.name );
}, function ( e ) {
alert( e.message );
} );

(9)、createReader: 建立目錄讀取物件

       DirectoryReader entry.createReader();

說明:建立一個目錄讀取物件,使用者讀取目下的檔案及子目錄。

返回值:DirectoryReader : 目錄讀取物件

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// create a directory reader
var directoryReader = entry.createReader();

(10)、getDirectory: 建立或開啟子目錄

       entry.getDirectory( path, flag, succesCB, errorCB );

說明:建立或開啟當前目錄指定的目錄。 建立或開啟目錄操作成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

path: ( DOMString ) 必選 要操作目錄相對於當前目錄的地址

flag: ( Flags ) 可選 要操作檔案或目錄的引數

succesCB: ( EntrySuccessCallback ) 可選 建立或開啟目錄成功的回撥函式

errorCB: ( FileErrorCallback) 可選 建立或開啟目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Retrieve an existing directory, or create it if it does not already exist
entry.getDirectory( "newDir", {create:true,exclusive:false}, function( dir ){
console.log("Directory Entry Name: " + dir.name);
}, function () {
alert( e.message );
} );

(11)、getFile: 建立或開啟檔案

       entry.getFile( path, flag, succesCB, errorCB );

說明:建立或開啟當前目錄下指定的檔案。 建立或開啟檔案操作物件成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

path: ( DOMString ) 必選 要操作檔案相對於當前目錄的地址

flag: ( Flags ) 可選 要操作檔案或目錄的引數

succesCB: ( EntrySuccessCallback ) 可選 建立或開啟檔案成功的回撥函式

errorCB: ( FileErrorCallback ) 可選 建立或開啟檔案失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PRIVATE_WWW, function(fs){
// fs.root是根目錄操作物件DirectoryEntry
fs.root.getFile('config.xml',{create:true}, function(fileEntry){
fileEntry.file( function(file){
var fileReader = new plus.io.FileReader();
alert("getFile:" + JSON.stringify(file));
fileReader.readAsText(file, 'utf-8');
fileReader.onloadend = function(evt) {
alert("11" + evt);
alert("evt.target" + evt.target);
alert(evt.target.result);
}
alert(file.size + '--' + file.name);
} );
});
} );
}
</script>
</head>
<body>
Request file system
</body>
</html>


(12)、removeRecursively: 遞迴刪除目錄

entry.removeRecursively( succesCB, errorCB );

說明:刪除目錄將會刪除其下的所有檔案及子目錄 不能刪除根目錄,如果操作刪除根目錄將會刪除目錄下的檔案及子目錄,不會刪除根目錄自身。 刪除目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 刪除目錄成功的回撥函式

回撥函式中無引數。

errorCB: ( FileErrorCallback) 可選 刪除目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// remove the directory and all it's contents
entry.removeRecursively( function ( entry ) {
plus.console.log( "Remove Recursively Succeeded" );
}, function ( e ) {
alert( e.message );
} );

2、DirectoryReader

讀取目錄資訊物件,用於獲取目錄中包含的檔案及子目錄

2.1方法

readEntries: 獲取當前目錄中的所有檔案和子目錄

           directoryReader.readEntries( succesCB, errorCB );

說明:獲取當前目錄下的所有檔案和子目錄。 獲取操作成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 獲取成功的回撥函式

errorCB: ( FileErrorCallback) 可選 獲取失敗的回撥函式

返回值:void : 無

示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>File Example</title>
<script type="text/javascript">
// 擴充套件API載入完畢後呼叫onPlusReady回撥函式
document.addEventListener( "plusready", onPlusReady, false );
// 擴充套件API載入完畢,現在可以正常呼叫擴充套件API
function onPlusReady() {
plus.io.requestFileSystem( plus.io.PRIVATE_WWW, function(fs){
// fs.root是根目錄操作物件DirectoryEntry
// 建立讀取目錄資訊物件
var directoryReader = fs.root.createReader();
directoryReader.readEntries( function( entries ){
var i;
for( i=0; i < entries.length; i++ ) {
alert( entries[i].name );
}
}, function ( e ) {
alert( "Read entries failed: " + e.message );
} );
} );
}
</script>
</head>
<body>
Request file system
</body>
</html>


3、File

檔案系統中的檔案資料物件,用於獲取檔案的資料

3.1屬性

size: 檔案資料物件的資料大小,單位為位元組

type: 檔案資料物件MIME型別

name: 檔案資料物件的名稱,不包括路徑

lastModifiedDate: 檔案物件的最後修改時間

3.2方法

(1)、slice: 獲取檔案指定的資料內容

            file.slice( start, end );

說明:獲取檔案指定的資料內容,其中end必須大於start。

引數:

start: ( Number ) 可選 獲取檔案資料的起始位置

end: ( Number ) 可選 獲取檔案資料的結束位置

返回值:File : 指定資料內容的檔案物件

示例:

var slice1 = file.slice(100, 400);
var slice2 = slice1.slice(20, 35);
var slice3 = file.slice(120, 135);
// slice2 and slice3 are equivalent.

(2)、close: 關閉檔案資料物件

                 file.close();

說明:當檔案資料物件不再使用時,可通過此方法關閉,釋放系統資源。

返回值:void : 無

示例:

var slice1 = file.slice(100, 400);
var slice2 = slice1.slice(20, 35);
var slice3 = file.slice(120, 135);
// slice2 and slice3 are equivalent.
// ......
slice3.close();

4、FileEntry

檔案系統中的檔案物件,用於管理特定的本地檔案

4.1屬性:

isFile: 檔案操作物件的是否為檔案,FileEntry物件固定其值為true

isDirectory: 檔案操作物件是否為目錄,FileEntry物件固定其值為false

name: 檔案操作物件的名稱,不包括路徑

fullPath: 檔案操作物件的完整路徑,檔案系統的絕對路徑

fileSystem: 檔案操作物件所屬的檔案系統物件,參考FileSystem

4.2方法:

(1)、getMetadata: 獲取檔案的屬性資訊

      entry.getMetadata( successCB, errorCB );

說明:用於獲取檔案的屬性資訊。 獲取屬性資訊成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( MetadataSuccessCallback ) 必選 獲取檔案屬性資訊成功的回撥函式

errorCB: ( FileErrorCallback ) 必選 獲取檔案屬性資訊失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Request the metadata object for this entry
entry.getMetadata( function ( metadata ) {
plus.console.log("Last Modified: " + metadata.modificationTime);
}, function () {
alert( e.message );
} );


(2)、moveTo: 移動檔案

      entry.moveTo( parent, newName, succesCB, errorCB );

說明:以下情況移動目錄將會導致失敗: 要移動到的目標目錄無效; 要移動到的目標路徑被其它檔案佔用; 移動檔案成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

parent: ( DirectoryEntry ) 必選 要移動到的目標目錄

newName: ( DOMString ) 可選 移動後的檔名稱,預設為原始檔名稱

succesCB: ( EntrySuccessCallback ) 可選 移動檔案成功的回撥函式

回撥函式中的引數儲存新的檔案物件。

errorCB: ( FileErrorCallback ) 可選 移動檔案失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

function moveFile(fileEntry,dstEntry){
// move the file to a new directory and rename it
fileEntry.moveTo( dstEntry, "newfile.txt", function( entry ){
plus.console.log("New Path: " + entry.fullPath);
}, function( e ){
alert( e.message );
} );
}


(3)、copyTo: 拷貝檔案

       entry.copyTo( parent, newName, succesCB, errorCB );

說明:以下情況拷貝檔案將會導致失敗: 要拷貝到的目標目錄無效; 要拷貝到的目標路徑被其它檔案佔用; 拷貝檔案成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

parent: ( DirectoryEntry ) 必選 要拷貝到的目標目錄

newName: ( DOMString ) 可選 拷貝後的檔名稱,預設為原始檔名稱

succesCB: ( EntrySuccessCallback ) 可選 拷貝檔案成功的回撥函式

回撥函式中的引數儲存新的檔案物件。

errorCB: ( FileErrorCallback ) 可選 拷貝檔案失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

function copyFile(fileEntry,dstEntry) {
// copy the file to a new directory and rename it
fileEntry.copyTo( dstEntry, "file.copy", function( entry ){
plus.console.log("New Path: " + entry.fullPath);
}, function( e ){
alert( e.message );
} );
}

(4)、toURL: 獲取檔案路徑轉換為URL地址

         DOMString entry.toURL();

返回值:DOMString : 格式為相對路徑URL

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the URL for this file
var fileURL = entry.toURL();
plus.console.log(fileURL);

(5)、toLocalURL: 獲取檔案路徑轉換為本地路徑URL地址

           DOMString entry.toLocalURL();

返回值:DOMString : 格式為本地路徑URL

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the local URL for this file
var fileURL = entry.toLocalURL();
plus.console.log(dirURL);

(6)、toRemoteURL: 獲取檔案路徑轉換為網路路徑URL地址

          DOMString entry.toRemoteURL();

說明:URL地址格式為以“http://localhost:13131/”開頭的網路路徑。

返回值:DOMString : 網路格式路徑URL

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the remote URL for this file
var fileURL = entry.toRemoteURL();
plus.console.log(dirURL);

(7)、remove: 刪除檔案

entry.remove( succesCB, errorCB );

說明:刪除檔案成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 刪除檔案成功的回撥函式

回撥函式中無引數。

errorCB: ( FileErrorCallback ) 可選 刪除檔案失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// remove this file
entry.remove( function ( entry ) {
plus.console.log( "Remove succeeded" );
}, function ( e ) {
alert( e.message );
} );

(8)、getParent: 獲取檔案所屬的父目錄

          entry.getParent( succesCB, errorCB );

說明:獲取父目錄成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( EntrySuccessCallback ) 可選 獲取父目錄成功的回撥函式

errorCB: ( FileErrorCallback ) 可選 獲取父目錄失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the parent DirectoryEntry
entry.getParent( function ( entry ) {
plus.console.log( "Parent Name: " + entry.name );
}, function ( e ) {
alert( e.message );
} );

(9)、createWriter: 獲取檔案關聯的寫檔案操作物件FileWriter

        entry.createWriter( succesCB, errorCB );

說明:獲取寫檔案操作物件成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( FileWriterSuccessCallback ) 可選 獲取寫檔案操作物件成功的回撥函式

errorCB: ( FileErrorCallback ) 可選 獲取寫檔案操作物件失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// create a FileWriter to write to the file
entry.createWriter( function ( writer ) {
// Write data to file.
writer.write( "Data " );
}, function ( e ) {
alert( e.message );
} );

(10)、file: 獲取檔案資料物件

       entry.file( succesCB, errorCB );

說明:獲取檔案資料物件成功通過succesCB回撥返回,失敗則通過errorCB返回。

引數:

succesCB: ( FileSuccessCallback ) 可選 獲取檔案資料物件成功的回撥函式

errorCB: ( FileErrorCallback ) 可選 獲取檔案資料物件失敗的回撥函式

返回值:void : 無

平臺支援:Android - 2.2+ (支援)、iOS - 4.3+ (支援)

示例:

// Get the parent DirectoryEntry
entry.file( function ( file ) {
plus.console.log("File size: " + file.size);
}, function ( e ) {
alert( e.message );
} );

5、FileReader

檔案系統中的讀取檔案物件,用於獲取檔案的內容

說明:FileReader物件是從裝置檔案系統讀取檔案,FileReader物件是從裝置檔案系統讀取檔案的一種方式,檔案以文字或者Base64編碼的字串形式讀出來。 使用者註冊自己的事件監聽器來接收loadstart、progress、load、loadend、error和abort事件。

5.1、構造

FileReader: 建立讀取檔案物件

5.2、常量

EMPTY: 值為0,開始讀取檔案狀態

LOADING: 值為1,正在讀取檔案狀態

DONE: 值為2,讀檔案操作完成狀態

5.3、屬性

readyState: 當前讀取檔案所處的狀態,可取上面定義的常量值,EMPTY(0)、LOADING(1)、DONE(2)。

result: 已讀取檔案的內容

error: 檔案操作錯誤程式碼

5.4、方法

(1)、abort: 終止檔案讀取操作

         reader.abort();

說明:讀取檔案操作開始後,可通過此方法取消讀取檔案。呼叫此方法後將觸發檔案讀取物件的onabort事件。

返回值:void : 無

示例:

// Read data from file
var reader = null;
entry.file( function ( file ) {
reader = new plus.io.FileReader();
reader.onloadend = function ( e ) {
plus.console.log( "Read success" );
// Get data
plus.console.log( e.target.result );
};
reader.readAsText( file );
}, function ( e ) {
alert( e.message );
} );
// ......
// Abort read data from file
reader.abort();


(2)、readAsDataURL: 以URL編碼格式讀取檔案資料內容

         reader.readAsDataURL( file, encoding );

說明:讀取檔案的資料內容,並將資料內容進行URL編碼。

引數:

file: ( File ) 必選 要讀取的檔案資料物件

encoding : ( DOMString ) 可選 讀取檔案資料內容的字元編碼格式,目前僅支援UTF-8編碼格式。

返回值:void : 無

示例:

// Read data from file
var reader = null;
entry.file( function ( file ) {
reader = new plus.io.FileReader();
reader.onloadend = function ( e ) {
plus.console.log( "Read success" );
// Get data
plus.console.log( e.target.result );
};
reader.readAsDataURL( file );
}, function ( e ) {
alert( e.message );
} );

(3)、readAsText: 以文字格式讀取檔案資料內容

        reader.readAsText( file, encoding );

說明:讀取檔案的資料內容。

引數:

file: ( File ) 必選 要讀取的檔案資料物件

encoding : ( DOMString ) 可選 讀