File
このAPIはW3Cの File API をベースとしています。ファイルシステムへの読み書きのための API です。
オブジェクト
- DirectoryEntry
- DirectoryReader
- File
- FileEntry
- FileError
- FileReader
- FileSystem
- FileTransfer
- FileTransferError
- FileUploadOptions
- FileUploadResult
- FileWriter
- Flags
- LocalFileSystem
- Metadata
パーミッション
Android
app/res/xml/plugins.xml
<plugin name="File" value="org.apache.cordova.FileUtils" />
<plugin name="FileTransfer" value="org.apache.cordova.FileTransfer" />
app/AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Bada
パーミッションの設定は必要ありません。
BlackBerry WebWorks
www/plugins.xml
<plugin name="File" value="org.apache.cordova.file.FileManager" />
<plugin name="FileTransfer" value="org.apache.cordova.http.FileTransfer" />
www/config.xml
<feature id="blackberry.io.file" required="true" version="1.0.0.0" />
<feature id="blackberry.utils" required="true" version="1.0.0.0" />
<feature id="blackberry.io.dir" required="true" version="1.0.0.0" />
<rim:permissions>
<rim:permit>access_shared</rim:permit>
</rim:permissions>
iOS
App/Supporting Files/Cordova.plist
<key>Plugins</key>
<dict>
<key>File</key>
<string>CDVFile</string>
</dict>
<key>Plugins</key>
<dict>
<key>FileTransfer</key>
<string>CDVFileTransfer</string>
</dict>
webOS
パーミッションの設定は必要ありません。
File
このオブジェクトは一つのファイルの属性を含みます。
プロパティー
- name: ファイルの名前を表します。 (DOMString)
- fullPath: ファイルの名前を含むフルパスを表します。 (DOMString)
- type: ファイルの mime type を表します。 (DOMString)
- lastModifiedDate: ファイルの最終更新日時を表します。 (Date)
- size: ファイルのサイズをバイトで表します。 (long)
詳細
この File オブジェクトは一つのファイルの属性を含みます。 FileEntry オブジェクトの file メソッドを呼び出すことで、 File オブジェクトのインスタンスを取得できます。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
FileReader
FileReader はファイルの読み込みを行うオブジェクトです。
プロパティー
- readyState: 右の3種類の状態のいずれかを表します (EMPTY, LOADING, DONE)
- result: 読み込まれたファイルのコンテンツを表します (DOMString)
- error: エラー情報を表します (FileError)
- onloadstart: 読み込み開始時に呼ばれる関数を表します (Function)
- onprogress: 読込中に呼ばれ、進捗状況を報告する関数を表します (progess.loaded/progress.total) (Function) - 現在サポートされていません
- onload: 読み込みが成功したときに呼ばれる関数を表します (Function)
- onabort: abort() メソッドを実行したときなど、 読み込みが強制終了したときに呼ばれる関数を表します (Function)
- onerror: 読み込みが失敗したときに呼ばれる関数を表します (Function)
- onloadend: 成功、失敗にかかわらずリクエストが完了した際に呼ばれる関数を表します (Function)
メソッド
- abort: 読み込みを強制終了します
- readAsDataURL: ファイルを読み込み、データを Base64 エンコードされたデータ URL で返します
- readAsText: テキストファイルを読み込みます
詳細
FileReader オブジェクトはデバイスのファイルシステムからファイルを読み込む際に使用します。ファイルはテキストもしくは Base64 でエンコードされた文字列として読み込まれます。また、 loadstart, progress, load, loadend, error や abort などのイベントを受け取るための独自のイベントリスナーを登録することも出来ます。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
データ URL として読み込む場合
パラメーター: - file - 読み込むファイルのフルパスを表します
使用例
function win(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("読み込み成功");
console.log(evt.target.result);
};
reader.readAsDataURL(file);
};
var fail = function(evt) {
console.log(error.code);
};
entry.file(win, fail);
テキストとして読み込む場合
パラメーター:
- file - 読み込むファイルのフルパスを表します
- encoding - ファイルのコンテンツのエンコードを表します (デフォルト: UTF-8)
使用例
function win(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("読み込み成功");
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("読み込み成功");
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 の使用例</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// Cordova 準備完了
//
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("データ URL として読み込み");
console.log(evt.target.result);
};
reader.readAsDataURL(file);
}
function readAsText(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
console.log("テキストとして読み込み");
console.log(evt.target.result);
};
reader.readAsText(file);
}
function fail(evt) {
console.log(evt.target.error.code);
}
</script>
</head>
<body>
<h1>使用例</h1>
<p>ファイルを読み込みます。</p>
</body>
</html>
iOS に関する注意点
- encoding パラメーターはサポートされておらず、常に UTF-8 エンコーディングが使われます。
FileWriter
FileWriter はファイルへの書き込みを行うオブジェクトです。
プロパティー
- readyState: 右の3種類の状態のいずれかを表します (INIT, WRITING, DONE)
- fileName: 書き込みの対象となるファイル名を表します (DOMString)
- length: 書き込みの対象となるファイル名を表します (long)
- position: ファイルポインタの現在の位置を表します (long)
- error: エラー情報を表します (FileError)
- onwritestart: 書き込み開始時に呼ばれる関数を表します (Function)
- onprogress: ファイル書き込み中に呼ばれ、進捗状況を報告する関数を表します (progress.loaded/progress.total) (Function) - 現在サポートされていません
- onwrite: リクエストが成功したときに呼ばれる関数を表します (Function)
- onabort: abort() メソッドを実行したときなど、 書き込みが強制終了したときに呼ばれる関数を表します (Function)
- onerror: 書き込みが失敗したときに呼ばれる関数を表します (Function)
- onwriteend: 成功、失敗にかかわらずリクエストが完了した際に呼ばれる関数を表します (Function)
メソッド
- abort: 書き込みを中断します
- seek: ファイルポインタを指定したバイトまで移動します
- truncate: ファイルを指定した長さに切り詰めます
- write: ファイルにデータを UTF-8 エンコーディングで書き込みます
詳細
FileWriter オブジェクトはデバイスのファイルシステムに書きこむ際に使用します。また、 writestart, progress, write, writeend, error や abort などのイベントを受け取るための独自のイベントリスナーを登録することも出来ます。
FileWriter は一つのファイルに対して使用されます。複数回の書き込みを行うこともできます。 FileWriter はファイルポインタの位置と length 属性を指定することができるので、ファイルのどの位置からでも書き込みを行うことができます。デフォルトではファイルの開始位置にポインタがセットされ、既存のデータを上書きしながら書き込みが行われます。書き込みをファイルの最終から始める場合は、 FileWriter のコンストラクタに true をオプションとして指定してください。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
Seek の例
function win(writer) {
// ファイルポインタを EOF (ファイルの終端) に移動
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("書き込み成功");
};
writer.write("サンプルテキスト");
};
var fail = function(evt) {
console.log(error.code);
};
entry.createWriter(win, fail);
Append の例
function win(writer) {
writer.onwrite = function(evt) {
console.log("書き込み成功");
};
writer.seek(writer.length);
writer.write("付加テキスト);
};
var fail = function(evt) {
console.log(error.code);
};
entry.createWriter(win, fail);
Abort の例
function win(writer) {
writer.onwrite = function(evt) {
console.log("書き込み成功");
};
writer.write("サンプルテキスト");
writer.abort();
};
var fail = function(evt) {
console.log(error.code);
};
entry.createWriter(win, fail);
詳細な使用例
<!DOCTYPE html>
<html>
<head>
<title>FileWriter の使用例</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova 準備完了
//
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
fileSystem.root.getFile("readme.txt", {create: true, exclusive: false}, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
fileEntry.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
writer.onwriteend = function(evt) {
console.log("ファイルの内容が 'some sample text' となりました");
writer.truncate(11);
writer.onwriteend = function(evt) {
console.log("ファイルの内容が 'some sample' となりました");
writer.seek(4);
writer.write(" different text");
writer.onwriteend = function(evt){
console.log("ファイルの内容が 'some different text' となりました");
}
};
};
writer.write("サンプルテキスト");
}
function fail(error) {
console.log(error.code);
}
</script>
</head>
<body>
<h1>使用例</h1>
<p>ファイルに書き込みます。</p>
</body>
</html>
FileSystem
このオブジェクトはファイルシステムを表します。
プロパティー
- name: ファイルシステムの名前を表します (DOMString)
- root: ファイルシステムのルートディレクトリを表します (DirectoryEntry)
詳細
FileSystem オブジェクトはファイルシステムの情報を表します。ファイルシステムの名前は既にあるファイルシステムに対して一意になります。 root プロパティーはファイルシステムのルートディレクトリを表す DirectoryEntry オブジェクトを保持します。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
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 の使用例</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova 準備完了
//
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 Directories and Systems の仕様書で定義されています。
プロパティー
- isFile: 常に true を表します (boolean)
- isDirectory: 常に false を表します (boolean)
- name: パスを除いた FileEntry の名前を表します (DOMString)
- fullPath: ルートから FileEntry への絶対パスを表します (DOMString)
注意: 以下の属性は W3C の仕様書によって定義されていますが、 Cordova では サポートされていません :
- filesystem: FileEntry が属するファイルシステムを表します (FileSystem)
メソッド
- getMetadata: ファイルのメタデータを取得します
- setMetadata: ディレクトリのメタデータをセットします
- moveTo: ファイルを、ファイルシステム内の別の場所に移動します
- copyTo: ファイルを、ファイルシステム内の別の場所にコピーします
- toURL: ファイルの位置特定に使用できる URL を返します
- remove: ファイルを削除します
- getParent: 親ディレクトリを取得します
- createWriter: ファイルの書き込みに使用できる FileWriter オブジェクトを作成します
- file: ファイルプロパティーを含む File オブジェクトを作成します
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
getMetadata
ファイルのメタデータを取得します。
パラメーター:
- successCallback - Metadata オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata の取得時にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(metadata) {
console.log("最終更新日: " + metadata.modificationTime);
}
function fail(error) {
alert(error.code);
}
// このエントリーの Metadata オブジェクトを取得
entry.getMetadata(success, fail);
setMetadata
ディレクトリのメタデータをセットします。 現在 iOS のみ対応しています - ディレクトリの拡張属性をセットします。
パラメーター:
- successCallback - Metadata が正常にセットされたときに呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata のセット時にエラーが起きた場合に呼び出されるコールバック関数を表します (Function)
- metadataObject - Metadata のキーと値が格納されているオブジェクトを表します (Object)
使用例
function success() {
console.log("メタデータが正常にセットされました。");
}
function fail() {
alert("メタデータ作成中にエラーが発生しました。");
}
// メタデータをセット
entry.setMetadata(success, fail, { "com.apple.MobileBackup": 1});
iOS に関する注意点
- "com.apple.MobileBackup" 拡張属性のみサポートされています。値を 1 とセットすることで、ディレクトリを iCloud でバックアップされない設定とします。値を 0 とセットすることで、再度ディレクトリを iCloud でバックアップされる設定とします。
moveTo
ファイルを、ファイルシステム内の別の場所に移動します。 以下のことを試みるとエラーが発生します:
- もし移動先親ディレクトリが移動元と同じで、移動先ファイル名も移動元と同じである場合
- もし移動先のファイル名がディレクトリである場合
ファイルをすでに存在するファイルの場所に移動する行為は、削除してファイルを置き換える行為となります。
パラメーター:
- parent - ファイルの移動先の親ディレクトリを表します (DirectoryEntry)
- newName - ファイルの新しい名前を表します。もし指定されていない場合は、デフォルトで現在の名前となります (DOMString)
- successCallback - 新しいファイルの FileEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ファイルの移動中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(entry) {
console.log("新しいパス: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function moveFile(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
parentEntry = new DirectoryEntry(parentName, parent);
// ファイルを新しいディレクトリに移動し、名前付け替えます
entry.moveTo(parentEntry, "newFile.txt", success, fail);
}
copyTo
ファイルを、ファイルシステム内の別の場所にコピーします。以下のことを試みるとエラーが発生します:
- もしコピー先親ディレクトリがコピー元と同じで、コピー先ファイル名もコピー元と同じである場合
パラメーター:
- parent - ファイルのコピー先の親ディレクトリを表します (DirectoryEntry)
- newName - ファイルの新しい名前を表します。もし指定されていない場合は、デフォルトで現在の名前となります (DOMString)
- successCallback - 新しいファイルの FileEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ファイルのコピー中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function win(entry) {
console.log("新しいパス: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function copyFile(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
parentEntry = new DirectoryEntry(parentName, parent);
// ファイルを新しいディレクトリにコピーし、名前付け替えます
entry.copyTo(parentEntry, "file.copy", success, fail);
}
toURL
ファイルの位置特定に使用できる URL を返します。
使用例
// このエントリーの URL を取得
var fileURL = entry.toURL();
console.log(fileURL);
remove
ファイルを削除します。
パラメーター:
- successCallback - ファイルが削除されたときに呼び出されるコールバック関数を表します。 パラメーターなしで呼び出されます (Function)
- errorCallback - ファイルの削除中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(entry) {
console.log("削除成功");
}
function fail(error) {
alert('ファイルの削除に失敗しました: ' + error.code);
}
// ファイルの削除
entry.remove(success, fail);
getParent
そのファイルの親 DirectoryEntry を取得します。
パラメーター:
- successCallback - ファイルの親 DirectoryEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ファイルの親 DirectoryEntry の取得中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(parent) {
console.log("親ディレクトリの名前: " + parent.name);
}
function fail(error) {
alert(error.code);
}
// 親 DirectoryEntry を取得
entry.getParent(success, fail);
createWriter
FileEntry の表すファイルに使われる FileWriter オブジェクトを作成します。
パラメーター:
- successCallback - FileWriter オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - FileWriter の作成中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(writer) {
writer.write("ファイルに書き込むテキスト");
}
function fail(error) {
alert(error.code);
}
// ファイルへの書き込みのための FileWriter を作成
entry.createWriter(success, fail);
file
FileEntry の表すファイルの現在の状態を表す File オブジェクトを返します。
パラメーター:
- successCallback - File オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - Fileオブジェクト作成中にエラーが起きた場合に呼び出されるコールバック関数を表します (例: 元のファイルが既に存在しない場合) 。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(file) {
console.log("File サイズ: " + file.size);
}
function fail(error) {
alert("ファイルのプロパティーを取得できませんでした: " + error.code);
}
// ファイルのプロパティーを取得
entry.file(success, fail);
DirectoryEntry
このオブジェクトはファイルシステムのディレクトリを表します。これは W3C Directories and Systems の仕様書で定義されています。
プロパティー
- isFile: 常に false を表します (boolean)
- isDirectory: 常に true を表します (boolean)
- name: パスを除いた DirectoryEntry の名前を表します (DOMString)
- fullPath: ルートから DirectoryEntry への絶対パスを表します (DOMString)
注意: 以下の属性は W3C の仕様書によって定義されていますが、 Cordova では サポートされていません :
- filesystem: DirectoryEntry が属するファイルシステムを表します (FileSystem)
メソッド
以下のメソッドは DirectoryEntry オブジェクトから呼び出すことができます:
- getMetadata: ディレクトリのメタデータを取得します
- setMetadata: ディレクトリのメタデータをセットします
- moveTo: ディレクトリを、ファイルシステム内の別の場所に移動します
- copyTo: ディレクトリを、ファイルシステム内の別の場所にコピーします
- toURL: ディレクトリの位置特定に使用できる URL を返します
- remove: ディレクトリを削除します。ディレクトリは空である必要があります
- getParent: 親ディレクトリを取得します
- createReader: ディレクトリからエントリを読み込みできる DirectoryReader を作成します
- getDirectory: ディレクトリを取得または作成します
- getFile: ファイルを取得または作成します
- removeRecursively: ディレクトリと、その中身をすべて削除します
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
getMetadata
ディレクトリのメタデータを取得します。
パラメーター:
- successCallback - Metadata オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata の取得時にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(metadata) {
console.log("最終更新日: " + metadata.modificationTime);
}
function fail(error) {
alert(error.code);
}
// このエントリーの Metadata オブジェクトを取得
entry.getMetadata(success, fail);
setMetadata
ディレクトリのメタデータをセットします。 現在 iOS のみ対応しています - ディレクトリの拡張属性をセットします。
パラメーター:
- successCallback - Metadata が正常にセットされたときに呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata のセット時にエラーが起きた場合に呼び出されるコールバック関数を表します (Function)
- metadataObject - Metadata のキーと値が格納されているオブジェクトを表します (Object)
使用例
function success() {
console.log("メタデータが正常にセットされました。");
}
function fail() {
alert("メタデータ作成中にエラーが発生しました。");
}
// メタデータをセット
entry.setMetadata(success, fail, { "com.apple.MobileBackup": 1});
iOS に関する注意点
- "com.apple.MobileBackup" 拡張属性のみサポートされています。値を 1 とセットすることで、ディレクトリを iCloud でバックアップされない設定とします。値を 0 とセットすることで、再度ディレクトリを iCloud でバックアップされる設定とします。
moveTo
ディレクトリを、ファイルシステム内の別の場所に移動します。 以下のことを試みるとエラーが発生します:
- ディレクトリをそれ自体、またはその子ディレクトリに移動する場合
- もし移動先親ディレクトリが移動元と同じで、移動先ディレクトリ名も移動元と同じである場合
- もし移動先のディレクトリ名がファイルである場合
- もし移動先のディレクトリが空でないディレクトリである場合
ディレクトリをすでに存在するディレクトリの場所に移動する行為は、削除してディレクトリを置き換える行為となります。
パラメーター:
- parent - ディレクトリの移動先の親ディレクトリを表します (DirectoryEntry)
- newName - ディレクトリの新しい名前を表します。 もし指定されていない場合は、デフォルトで現在の名前となります (DOMString)
- successCallback - 新しいディレクトリの DirectoryEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ディレクトリの移動中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(entry) {
console.log("新しいパス: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function moveDir(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
newName = document.getElementById('newName').value,
parentEntry = new DirectoryEntry(parentName, parent);
// ディレクトリを新しいディレクトリに移動し、名前付け替えます
entry.moveTo(parentEntry, newName, success, fail);
}
copyTo
ディレクトリを、ファイルシステム内の別の場所にコピーします 以下のことを試みるとエラーが発生します:
- ディレクトリをそれ自体、またはその子ディレクトリにコピーする場合
- もしコピー先親ディレクトリがコピー元と同じで、コピー先ディレクトリ名もコピー元と同じである場合
ディレクトリーのコピーは常に再帰的で、ディレクトリ内の全ての中身がコピーされます。
パラメーター:
- parent - ディレクトリのコピー先の親ディレクトリを表します (DirectoryEntry)
- newName - ディレクトリの新しい名前を表します。 もし指定されていない場合は、デフォルトで現在の名前となります (DOMString)
- successCallback - 新しいディレクトリの DirectoryEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ディレクトリのコピー中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function win(entry) {
console.log("新しいパス: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function copyDir(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
newName = document.getElementById('newName').value,
parentEntry = new DirectoryEntry(parentName, parent);
// ディレクトリを新しいディレクトリにコピーし、名前付け替えます
entry.copyTo(parentEntry, newName, success, fail);
}
toURL
ディレクトリの位置特定に使用できる URL を返します。
使用例
// ディレクトリ URL の取得
var dirURL = entry.toURL();
console.log(dirURL);
remove
ディレクトリを削除します。 以下のことを試みるとエラーが発生します:
- 空でないディレクトリを削除する場合
- ファイルシステムのルートディレクトリを削除する場合
パラメーター:
- successCallback - ディレクトリが削除されたときに呼び出されるコールバック関数を表します。パラメーターなしで呼び出されます (Function)
- errorCallback - ディレクトリのコピー中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(entry) {
console.log("削除成功");
}
function fail(error) {
alert('ディレクトリの削除中にエラーが発生しました: ' + error.code);
}
// ディレクトリを削除
entry.remove(success, fail);
getParent
そのディレクトリの親 DirectoryEntry を取得します。
パラメーター:
- successCallback - ディレクトリの親 DirectoryEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ファイルの親 DirectoryEntry の取得中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(parent) {
console.log("親ディレクトリの名前: " + parent.name);
}
function fail(error) {
alert('親ディレクトリの取得中にエラーが発生しました: ' + error.code);
}
// 親 DirectoryEntry を取得
entry.getParent(success, fail);
createReader
ディレクトリのエントリを読み込みするための DirectoryReader を作成します。
使用例
// directory reader の作成
var directoryReader = entry.createReader();
getDirectory
ディレクトリを取得または作成します。 以下のことを試みるとエラーが発生します:
- 親ディレクトリが存在しないディレクトリを作る場合
パラメーター:
- path - 取得または作成したいディレクトリまでのパスを表します。 この DirectoryEntry からの絶対パスまたは相対パスを指定します (DOMString)
- options - もしディレクトリが存在しない場合、作成するかどうかを指定するオプションを表します (Flags)
- successCallback - DirectoryEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ディレクトリの取得または作成中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(parent) {
console.log("親ディレクトリの名前: " + parent.name);
}
function fail(error) {
alert("新しいディレクトリの作成中にエラーが発生しました: " + error.code);
}
// 既存のディレクトリを取得。存在しない場合は作成
entry.getDirectory("newDir", {create: true, exclusive: false}, success, fail);
getFile
ファイルを取得または作成します。 以下のことを試みるとエラーが発生します:
- 親ディレクトリが存在しないファイルを作る場合
パラメーター:
- path - 取得または作成したいファイルまでのパスを表します。 この DirectoryEntry からの絶対パスまたは相対パスを指定します (DOMString)
- options - もしファイルが存在しない場合、作成するかどうかを指定するオプションを表します (Flags)
- successCallback - FileEntry を伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - ファイルの取得または作成中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(parent) {
console.log("親ディレクトリの名前: " + parent.name);
}
function fail(error) {
alert("ファイルの取得中にエラーが発生しました: " + error.code);
}
// 既存のファイルを取得。存在しない場合は作成
entry.getFile("newFile.txt", {create: true, exclusive: false}, success, fail);
removeRecursively
ディレクトリと、その中身をすべて削除します。 エラーが起きたとき (例: 削除できないファイルが含まれるディレクトリを削除しようとした場合) ディレクトリのコンテンツのいくつかは削除されている場合があります。 以下のことを試みるとエラーが発生します:
- ファイルシステムのルートディレクトリを削除する場合
パラメーター:
- successCallback - DirectoryEntry が削除されたときに呼び出されるコールバック関数を表します。 パラメーターなしで呼び出されます (Function)
- errorCallback - DirectoryEntry の削除中にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(parent) {
console.log("再帰的な削除成功");
}
function fail(error) {
alert("ディレクトリまたはディレクトリの中身の削除中にエラーが発生しました: " + error.code);
}
// ディレクトリとディレクトリの中身を削除
entry.removeRecursively(success, fail);
DirectoryReader
ディレクトリの中のファイルとディレクトリをリストアップするオブジェクトです。これは W3C Directories and Systems の仕様書で定義されています。
メソッド
- readEntries: ディレクトリの中のエントリを読み込みます
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
readEntries
このディレクトリの中のエントリを読み込みます。
パラメーター:
- successCallback - FileEntry と DirectoryEntry オブジェクトの配列を渡すコールバック関数を表します (Function)
- errorCallback - ディレクトリリストの取得時にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
function success(entries) {
var i;
for (i=0; i<entries.length; i++) {
console.log(entries[i].name);
}
}
function fail(error) {
alert("コンテンツのリストアップ中にエラーが発生しました: " + error.code);
}
// directory readerの取得
var directoryReader = dirEntry.createReader();
// ディレクトリの中のすべてのエントリのリストを取得
directoryReader.readEntries(success,fail);
FileTransfer
FileTransfer オブジェクトはファイルをサーバーにアップロードまたはサーバからダウンロードする際に使用します。
プロパティー
なし
メソッド
- upload: サーバーにファイルを送信
- download: サーバーからファイルをダウンロード
詳細
FileTransfer オブジェクトは HTTP マルチパート POST リクエストを使ってファイルをサーバーにアップロードする機能を提供します。このメソッドは HTTP と HTTPS の両方のプロトコルをサポートします。 upload メソッドに FileUploadOptions オブジェクトを渡すことで、任意のパラメーターを追加できます。アップロードが成功した場合 FileUploadResult オブジェクトとともに success コールバック関数が呼ばれます。エラーが発生した場合は FileTransferError オブジェクトとともに error コールバック関数が呼ばれます。
また、サーバーからファイルをダウンロードし保存することもできます (iOS と Android のみ) 。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
upload
パラメーター:
- filePath - デバイス内のファイルのフルパスを表します
- server - ファイルを受け取るサーバーの URL を表します (encodeURI() を使用して既にエンコードされている必要があります)
- successCallback - Metadata オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata の取得時にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
- options - ファイル名や minetype などのオプションのパラメーターを表します
使用例
// !! fileURI の値は有効なデバイス内の有効なテキストファイルの URI であるとみなします
var win = function(r) {
console.log("コード = " + r.responseCode);
console.log("結果 = " + r.response);
console.log("送信バイト数 = " + r.bytesSent);
}
var fail = function(error) {
alert("エラーが発生しました: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
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, encodeURI("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 の使用例</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova 準備完了
//
function onDeviceReady() {
// 写真をファイル URI として取得する場合
navigator.camera.getPicture(uploadPhoto,
function(message) { alert('写真の取得に失敗しました'); },
{ 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, encodeURI("http://some.server.com/upload.php"), win, fail, options);
}
function win(r) {
console.log("コード = " + r.responseCode);
console.log("結果 = " + r.response);
console.log("送信バイト数 = " + r.bytesSent);
}
function fail(error) {
alert("エラーが発生しました: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
</script>
</head>
<body>
<h1>使用例</h1>
<p>ファイルアップロード</p>
</body>
</html>
iOS に関する注意点
FileTransfer アップロードのためのヘッダーを設定:
使用例
function win(r) {
console.log("コード = " + r.responseCode);
console.log("結果 = " + r.response);
console.log("送信バイト数 = " + r.bytesSent);
}
function fail(error) {
alert("エラーが発生しました: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var uri = encodeURI("http://some.server.com/upload.php");
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1);
options.mimeType="text/plain";
var params = new Object();
params.headers={'headerParam':'headerValue'};
options.params = params;
var ft = new FileTransfer();
ft.upload(fileURI, uri, win, fail, options);
download
パラメーター:
- source - ファイルを取得するサーバーの URL を表します (encodeURI() を使用して既にエンコードされている必要があります)
- target - デバイス内のファイルのフルパスを表します
- successCallback - FileEntry オブジェクトを伴って呼び出されるコールバック関数を表します (Function)
- errorCallback - Metadata の取得時にエラーが起きた場合に呼び出されるコールバック関数を表します。 FileError オブジェクトを伴って呼び出されます (Function)
使用例
// !! url はサーバー内の有効なファイルを指すことと filePath がデバイス内の有効な値であるとみなします
var fileTransfer = new FileTransfer();
var uri = encodeURI("http://some.server.com/download.php");
fileTransfer.download(
url,
filePath,
function(entry) {
console.log("ダウンロード完了: " + entry.fullPath);
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
}
);
FileUploadOptions
FileUploadOptions オブジェクトは upload メソッドを実行する際に FileTransfer オブジェクトに渡して、追加のパラメーターとして設定する場合に使用します。
プロパティー
- fileKey: フォーム要素の名前を指定します。 デフォルトは "file" です (DOMString)
- fileName: サーバーに保存する際のファイル名を指定します。 デフォルトは "image.jpg" です (DOMString)
- mimeType: データの MIME 形式を指定します。 デフォルトは "image/jpeg" です (DOMString)
- params: その他の HTTP リクエストで送信されるパラメーターを指定します (Object)
- chunkedMode: アップロードにチャンクドストリーミングモードを使用するかを指定します。 デフォルトは "true" です (Boolean)
概要
FileUploadOptions オブジェクトは upload メソッドを実行する際に FileTransfer オブジェクトに渡して、追加のパラメーターとして設定する場合に使用します。
WP7 に関する注意点
- chunkedMode: WP7 ではこの値は無視されます。
FileUploadResult
FileUploadResult オブジェクトは、 FileTransfer の upload メソッドの呼び出しが成功した時に、成功コールバック関数に渡されるオブジェクトです。
プロパティー
- bytesSent: 送信されたバイト数を表します (long)
- responseCode: サーバーから返された HTTP のレスポンスコードを表します (long)
- response: サーバーから返された HTTP のレスポンスを表します (DOMString)
概要
FileUploadResult オブジェクトは、 FileTransfer の upload メソッドの呼び出しが成功した時に、成功コールバック関数に渡されるオブジェクトです。
iOS に関する注意点
- iOS では、成功コールバック関数に渡される FileUploadResult オブジェクトには、 responseCode も bytesSent も含まれません。
Flags
このオブジェクトは、 DirectoryEntry の getFile メソッドと getDirectory メソッド (ファイルやディレクトリを取得または作成するメソッド) に渡される引数として使われます。
プロパティー
- create: もし対象のファイルまたはディレクトリが無かった場合、作成するかどうかを表します (boolean)
- exclusive: このプロパティー単体では効果はありません。 create プロパティーと一緒に使います。もし対象のパスが既に存在した場合は、取得するのではなくファイルまたはディレクトリの作成に失敗します (boolean)
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
使用例
// data ディレクトリを取得します。もし存在しない場合は、作成します
dataDir = fileSystem.root.getDirectory("data", {create: true});
// lockfile.txt ファイルを、存在しない場合のみ作成します
lockFile = dataDir.getFile("lockfile.txt", {create: true, exclusive: true});
LocalFileSystem
このオブジェクトは、ファイルシステムのルートの取得方法を提供します。
メソッド
- requestFileSystem: ファイルシステムをリクエストします (Function)
- resolveLocalFileSystemURI: ローカル URI を使用して DirectoryEntry または FileEntry を取得します (Function)
定数
-
LocalFileSystem.PERSISTENT: アプリやユーザーの許可なしに、ユーザエージェントのみでは削除されないような永続的なストレージを表します -
LocalFileSystem.TEMPORARY: 永続性が保証されていないようなストレージを表します
詳細
LocalFileSystem オブジェクトのメソッドは window オブジェクトに定義されています。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
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 の使用例</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova 準備完了
//
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>使用例</h1>
<p>Local File System</p>
</body>
</html>
Metadata
ファイルやディレクトリの状態を提供します。
プロパティー
- modificationTime: ファイルまたはディレクトリの最終更新日時を表します (Date)
詳細
Metadata オブジェクトは、ファイルやディレクトリの状態を表します。 DirectoryEntry または FileEntry の getMetadata メソッドを呼び出すことで、 Metadata オブジェクトが取得できます。
サポートされているプラットフォーム
- Android
- BlackBerry WebWorks (OS 5.0 以上)
- iOS
- Windows Phone 7 (Mango)
使用例
function win(metadata) {
console.log("最終更新日: " + metadata.modificationTime);
}
// このエントリーの Metadata オブジェクトを取得
entry.getMetadata(win, null);
FileError
FileError オブジェクトはエラーが発生した際に File API のメソッドに渡されます。
プロパティー
- code: 事前に定義された以下のエラーコードのうちの1つを表します
定数
FileError.NOT_FOUND_ERRFileError.SECURITY_ERRFileError.ABORT_ERRFileError.NOT_READABLE_ERRFileError.ENCODING_ERRFileError.NO_MODIFICATION_ALLOWED_ERRFileError.INVALID_STATE_ERRFileError.SYNTAX_ERRFileError.INVALID_MODIFICATION_ERRFileError.QUOTA_EXCEEDED_ERRFileError.TYPE_MISMATCH_ERRFileError.PATH_EXISTS_ERR
概要
FileError オブジェクトは File API のあらゆるエラーコールバック関数への唯一のパラメーターです。開発者はエラーのタイプを特定するために、 code プロパティーを確認する必要があります。
FileTransferError
FileTransferError オブジェクトは、エラーが発生したときエラーコールバック関数に渡されます。
プロパティー
- code 事前に定義された以下のエラーコードのうちの1つを表します (Number)
- source ソースの URI を表します (String)
- target ターゲットの URI を表します (String)
- http_status HTTP のステータスコードを表します。この属性は、レスポンスコードが HTTP コネクションから返されたときのみ有効です (Number)
定数
FileTransferError.FILE_NOT_FOUND_ERRFileTransferError.INVALID_URL_ERRFileTransferError.CONNECTION_ERR
概要
FileTransferError オブジェクトは、ファイルアップロードまたはダウンロード時にエラーが発生したときエラーコールバック関数に渡されます。