cordova-android/framework/assets/js/file.js

1006 lines
31 KiB
JavaScript
Raw Normal View History

/*
2011-10-28 05:04:39 +08:00
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
2011-10-28 05:04:39 +08:00
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
if (!PhoneGap.hasResource("file")) {
PhoneGap.addResource("file");
/**
2010-11-20 02:25:24 +08:00
* This class provides some useful information about a file.
* @constructor
*/
var FileProperties = function(filePath) {
2010-11-20 02:25:24 +08:00
this.filePath = filePath;
this.size = 0;
this.lastModifiedDate = null;
};
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
/**
* Represents a single file.
*
* @constructor
* @param name {DOMString} name of the file, without path information
* @param fullPath {DOMString} the full path of the file, including the name
* @param type {DOMString} mime type
* @param lastModifiedDate {Date} last modified date
* @param size {Number} size of the file in bytes
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
*/
var File = function(name, fullPath, type, lastModifiedDate, size) {
this.name = name || null;
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.fullPath = fullPath || null;
this.type = type || null;
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.lastModifiedDate = lastModifiedDate || null;
this.size = size || 0;
};
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
/** @constructor */
var FileError = function() {
this.code = null;
};
2010-11-20 02:25:24 +08:00
// File error codes
// Found in DOMException
FileError.NOT_FOUND_ERR = 1;
FileError.SECURITY_ERR = 2;
FileError.ABORT_ERR = 3;
// Added by this specification
FileError.NOT_READABLE_ERR = 4;
FileError.ENCODING_ERR = 5;
FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
FileError.INVALID_STATE_ERR = 7;
FileError.SYNTAX_ERR = 8;
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
FileError.INVALID_MODIFICATION_ERR = 9;
FileError.QUOTA_EXCEEDED_ERR = 10;
FileError.TYPE_MISMATCH_ERR = 11;
FileError.PATH_EXISTS_ERR = 12;
2010-11-20 02:25:24 +08:00
//-----------------------------------------------------------------------------
// File Reader
//-----------------------------------------------------------------------------
/**
* This class reads the mobile device file system.
*
* For Android:
* The root directory is the root of the file system.
* To read from the SD card, the file name is "sdcard/my_file.txt"
* @constructor
*/
var FileReader = function() {
this.fileName = "";
this.readyState = 0;
// File data
this.result = null;
// Error
this.error = null;
// Event handlers
this.onloadstart = null; // When the read starts.
this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)
this.onload = null; // When the read has successfully completed.
this.onerror = null; // When the read has failed (see errors).
this.onloadend = null; // When the request has completed (either in success or failure).
this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method.
};
// States
FileReader.EMPTY = 0;
FileReader.LOADING = 1;
FileReader.DONE = 2;
/**
* Abort reading file.
*/
FileReader.prototype.abort = function() {
var evt;
this.readyState = FileReader.DONE;
this.result = null;
2010-11-17 00:03:21 +08:00
// set error
var error = new FileError();
error.code = error.ABORT_ERR;
this.error = error;
2010-11-17 00:03:21 +08:00
// If error callback
if (typeof this.onerror === "function") {
this.onerror({"type":"error", "target":this});
2010-11-17 00:03:21 +08:00
}
// If abort callback
if (typeof this.onabort === "function") {
this.onabort({"type":"abort", "target":this});
}
2010-11-17 00:03:21 +08:00
// If load end callback
if (typeof this.onloadend === "function") {
this.onloadend({"type":"loadend", "target":this});
2010-11-17 00:03:21 +08:00
}
};
/**
* Read text file.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param file {File} File object containing file properties
* @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)
*/
FileReader.prototype.readAsText = function(file, encoding) {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.fileName = "";
if (typeof file.fullPath === "undefined") {
this.fileName = file;
} else {
this.fileName = file.fullPath;
}
// LOADING state
this.readyState = FileReader.LOADING;
// If loadstart callback
if (typeof this.onloadstart === "function") {
this.onloadstart({"type":"loadstart", "target":this});
}
// Default encoding is UTF-8
var enc = encoding ? encoding : "UTF-8";
var me = this;
// Read file
PhoneGap.exec(
// Success callback
function(r) {
var evt;
// If DONE (cancelled), then don't do anything
if (me.readyState === FileReader.DONE) {
return;
}
// Save result
me.result = r;
// If onload callback
if (typeof me.onload === "function") {
me.onload({"type":"load", "target":me});
}
2010-11-17 00:03:21 +08:00
// DONE state
me.readyState = FileReader.DONE;
// If onloadend callback
if (typeof me.onloadend === "function") {
me.onloadend({"type":"loadend", "target":me});
}
},
// Error callback
function(e) {
var evt;
// If DONE (cancelled), then don't do anything
if (me.readyState === FileReader.DONE) {
return;
}
// Save error
me.error = e;
// If onerror callback
if (typeof me.onerror === "function") {
me.onerror({"type":"error", "target":me});
}
2010-11-17 00:03:21 +08:00
// DONE state
me.readyState = FileReader.DONE;
// If onloadend callback
if (typeof me.onloadend === "function") {
me.onloadend({"type":"loadend", "target":me});
}
}, "File", "readAsText", [this.fileName, enc]);
};
/**
* Read file and return data as a base64 encoded data url.
* A data url is of the form:
* data:[<mediatype>][;base64],<data>
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param file {File} File object containing file properties
*/
FileReader.prototype.readAsDataURL = function(file) {
this.fileName = "";
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
if (typeof file.fullPath === "undefined") {
this.fileName = file;
} else {
this.fileName = file.fullPath;
}
// LOADING state
this.readyState = FileReader.LOADING;
// If loadstart callback
if (typeof this.onloadstart === "function") {
this.onloadstart({"type":"loadstart", "target":this});
}
var me = this;
// Read file
PhoneGap.exec(
// Success callback
function(r) {
var evt;
// If DONE (cancelled), then don't do anything
if (me.readyState === FileReader.DONE) {
return;
}
// Save result
me.result = r;
// If onload callback
if (typeof me.onload === "function") {
me.onload({"type":"load", "target":me});
}
2010-11-17 00:03:21 +08:00
// DONE state
me.readyState = FileReader.DONE;
// If onloadend callback
if (typeof me.onloadend === "function") {
me.onloadend({"type":"loadend", "target":me});
}
},
// Error callback
function(e) {
var evt;
// If DONE (cancelled), then don't do anything
if (me.readyState === FileReader.DONE) {
return;
}
// Save error
me.error = e;
// If onerror callback
if (typeof me.onerror === "function") {
me.onerror({"type":"error", "target":me});
}
2010-11-17 00:03:21 +08:00
// DONE state
me.readyState = FileReader.DONE;
// If onloadend callback
if (typeof me.onloadend === "function") {
me.onloadend({"type":"loadend", "target":me});
}
}, "File", "readAsDataURL", [this.fileName]);
};
/**
* Read file and return data as a binary data.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param file {File} File object containing file properties
*/
FileReader.prototype.readAsBinaryString = function(file) {
// TODO - Can't return binary data to browser.
this.fileName = file;
};
2010-10-29 10:17:20 +08:00
/**
* Read file and return data as a binary data.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param file {File} File object containing file properties
2010-10-29 10:17:20 +08:00
*/
FileReader.prototype.readAsArrayBuffer = function(file) {
// TODO - Can't return binary data to browser.
this.fileName = file;
};
//-----------------------------------------------------------------------------
// File Writer
//-----------------------------------------------------------------------------
/**
* This class writes to the mobile device file system.
*
* For Android:
* The root directory is the root of the file system.
* To write to the SD card, the file name is "sdcard/my_file.txt"
*
* @constructor
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param file {File} File object containing file properties
2010-11-20 02:25:24 +08:00
* @param append if true write to the end of the file, otherwise overwrite the file
*/
var FileWriter = function(file) {
this.fileName = "";
2010-11-20 02:25:24 +08:00
this.length = 0;
if (file) {
this.fileName = file.fullPath || file;
this.length = file.size || 0;
}
2010-11-20 02:25:24 +08:00
// default is to write at the beginning of the file
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.position = 0;
2010-10-28 04:09:13 +08:00
this.readyState = 0; // EMPTY
2010-10-28 04:09:13 +08:00
this.result = null;
2010-10-28 04:09:13 +08:00
// Error
this.error = null;
// Event handlers
this.onwritestart = null; // When writing starts
this.onprogress = null; // While writing the file, and reporting partial file data
this.onwrite = null; // When the write has successfully completed.
this.onwriteend = null; // When the request has completed (either in success or failure).
this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
this.onerror = null; // When the write has failed (see errors).
};
// States
2010-10-28 04:09:13 +08:00
FileWriter.INIT = 0;
FileWriter.WRITING = 1;
FileWriter.DONE = 2;
2010-10-28 04:09:13 +08:00
/**
* Abort writing file.
*/
FileWriter.prototype.abort = function() {
// check for invalid state
if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
throw FileError.INVALID_STATE_ERR;
}
// set error
var error = new FileError(), evt;
error.code = error.ABORT_ERR;
this.error = error;
// If error callback
if (typeof this.onerror === "function") {
this.onerror({"type":"error", "target":this});
}
2010-10-28 04:09:13 +08:00
// If abort callback
if (typeof this.onabort === "function") {
this.onabort({"type":"abort", "target":this});
2010-10-28 04:09:13 +08:00
}
this.readyState = FileWriter.DONE;
2010-10-28 04:09:13 +08:00
// If write end callback
2011-11-08 06:54:15 +08:00
if (typeof this.onwriteend === "function") {
this.onwriteend({"type":"writeend", "target":this});
2010-10-29 10:17:20 +08:00
}
};
2010-11-20 02:25:24 +08:00
/**
* Writes data to the file
*
2010-11-20 02:25:24 +08:00
* @param text to be written
*/
FileWriter.prototype.write = function(text) {
// Throw an exception if we are already writing a file
if (this.readyState === FileWriter.WRITING) {
throw FileError.INVALID_STATE_ERR;
}
2010-10-29 10:17:20 +08:00
2010-11-20 02:25:24 +08:00
// WRITING state
this.readyState = FileWriter.WRITING;
var me = this;
// If onwritestart callback
if (typeof me.onwritestart === "function") {
me.onwritestart({"type":"writestart", "target":me});
2010-11-20 02:25:24 +08:00
}
// Write file
PhoneGap.exec(
2010-11-20 02:25:24 +08:00
// Success callback
function(r) {
var evt;
2010-11-20 02:25:24 +08:00
// If DONE (cancelled), then don't do anything
if (me.readyState === FileWriter.DONE) {
2010-11-20 02:25:24 +08:00
return;
}
// position always increases by bytes written because file would be extended
me.position += r;
// The length of the file is now where we are done writing.
me.length = me.position;
2010-11-20 02:25:24 +08:00
// If onwrite callback
if (typeof me.onwrite === "function") {
me.onwrite({"type":"write", "target":me});
2010-11-20 02:25:24 +08:00
}
// DONE state
me.readyState = FileWriter.DONE;
// If onwriteend callback
if (typeof me.onwriteend === "function") {
me.onwriteend({"type":"writeend", "target":me});
2010-11-20 02:25:24 +08:00
}
},
// Error callback
function(e) {
var evt;
2010-11-20 02:25:24 +08:00
// If DONE (cancelled), then don't do anything
if (me.readyState === FileWriter.DONE) {
2010-11-20 02:25:24 +08:00
return;
}
// Save error
me.error = e;
2010-11-20 02:25:24 +08:00
// If onerror callback
if (typeof me.onerror === "function") {
me.onerror({"type":"error", "target":me});
2010-11-20 02:25:24 +08:00
}
// DONE state
me.readyState = FileWriter.DONE;
// If onwriteend callback
if (typeof me.onwriteend === "function") {
me.onwriteend({"type":"writeend", "target":me});
2010-11-20 02:25:24 +08:00
}
}, "File", "write", [this.fileName, text, this.position]);
2010-11-20 02:25:24 +08:00
};
/**
2010-11-20 02:25:24 +08:00
* Moves the file pointer to the location specified.
*
* If the offset is a negative number the position of the file
* pointer is rewound. If the offset is greater than the file
* size the position is set to the end of the file.
*
2010-11-20 02:25:24 +08:00
* @param offset is the location to move the file pointer to.
*/
FileWriter.prototype.seek = function(offset) {
// Throw an exception if we are already writing a file
if (this.readyState === FileWriter.WRITING) {
throw FileError.INVALID_STATE_ERR;
}
if (!offset) {
return;
}
2010-11-20 02:25:24 +08:00
// See back from end of file.
if (offset < 0) {
this.position = Math.max(offset + this.length, 0);
}
// Offset is bigger then file size so set position
2010-11-20 02:25:24 +08:00
// to the end of the file.
else if (offset > this.length) {
this.position = this.length;
}
2010-11-20 02:25:24 +08:00
// Offset is between 0 and file size so set the position
// to start writing.
else {
this.position = offset;
}
2010-11-20 02:25:24 +08:00
};
/**
2010-11-20 02:25:24 +08:00
* Truncates the file to the size specified.
*
2010-11-20 02:25:24 +08:00
* @param size to chop the file at.
*/
FileWriter.prototype.truncate = function(size) {
// Throw an exception if we are already writing a file
if (this.readyState === FileWriter.WRITING) {
throw FileError.INVALID_STATE_ERR;
}
2010-10-29 10:17:20 +08:00
// WRITING state
this.readyState = FileWriter.WRITING;
var me = this;
// If onwritestart callback
if (typeof me.onwritestart === "function") {
me.onwritestart({"type":"writestart", "target":this});
2010-10-29 10:17:20 +08:00
}
// Write file
PhoneGap.exec(
2010-10-29 10:17:20 +08:00
// Success callback
function(r) {
var evt;
2010-10-29 10:17:20 +08:00
// If DONE (cancelled), then don't do anything
if (me.readyState === FileWriter.DONE) {
2010-10-29 10:17:20 +08:00
return;
}
2010-11-20 02:25:24 +08:00
// Update the length of the file
me.length = r;
me.position = Math.min(me.position, r);
2010-10-29 10:17:20 +08:00
// If onwrite callback
if (typeof me.onwrite === "function") {
me.onwrite({"type":"write", "target":me});
2010-10-29 10:17:20 +08:00
}
// DONE state
me.readyState = FileWriter.DONE;
2010-10-29 10:17:20 +08:00
// If onwriteend callback
if (typeof me.onwriteend === "function") {
me.onwriteend({"type":"writeend", "target":me});
2010-10-29 10:17:20 +08:00
}
},
// Error callback
function(e) {
var evt;
2010-10-29 10:17:20 +08:00
// If DONE (cancelled), then don't do anything
if (me.readyState === FileWriter.DONE) {
2010-10-29 10:17:20 +08:00
return;
}
// Save error
me.error = e;
2010-10-29 10:17:20 +08:00
// If onerror callback
if (typeof me.onerror === "function") {
me.onerror({"type":"error", "target":me});
}
2010-10-28 04:09:13 +08:00
2010-10-29 10:17:20 +08:00
// DONE state
me.readyState = FileWriter.DONE;
2010-10-28 04:09:13 +08:00
// If onwriteend callback
if (typeof me.onwriteend === "function") {
me.onwriteend({"type":"writeend", "target":me});
2010-10-28 04:09:13 +08:00
}
}, "File", "truncate", [this.fileName, size]);
};
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
/**
* Information about the state of the file or directory
*
* @constructor
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* {Date} modificationTime (readonly)
*/
var Metadata = function() {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.modificationTime=null;
};
/**
* Supplies arguments to methods that lookup or create files and directories
*
* @constructor
* @param {boolean} create file or directory if it doesn't exist
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {boolean} exclusive if true the command will fail if the file or directory exists
*/
var Flags = function(create, exclusive) {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.create = create || false;
this.exclusive = exclusive || false;
};
/**
* An interface representing a file system
*
* @constructor
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* {DOMString} name the unique name of the file system (readonly)
* {DirectoryEntry} root directory of the file system (readonly)
*/
var FileSystem = function() {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.name = null;
this.root = null;
};
/**
* An interface that lists the files and directories in a directory.
* @constructor
*/
var DirectoryReader = function(fullPath){
this.fullPath = fullPath || null;
};
/**
* Returns a list of entries from a directory.
*
* @param {Function} successCallback is called with a list of entries
* @param {Function} errorCallback is called with a FileError
*/
DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "readEntries", [this.fullPath]);
};
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
/**
* An interface representing a directory on the file system.
*
* @constructor
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* {boolean} isFile always false (readonly)
* {boolean} isDirectory always true (readonly)
* {DOMString} name of the directory, excluding the path leading to it (readonly)
* {DOMString} fullPath the absolute full path to the directory (readonly)
* {FileSystem} filesystem on which the directory resides (readonly)
*/
var DirectoryEntry = function() {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.isFile = false;
this.isDirectory = true;
this.name = null;
this.fullPath = null;
this.filesystem = null;
};
/**
* Copies a directory to a new location
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DirectoryEntry} parent the directory to which to copy the entry
* @param {DOMString} newName the new name of the entry, defaults to the current name
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
};
/**
* Looks up the metadata of the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with a Metadata object
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.getMetadata = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
};
/**
* Gets the parent of the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with a parent entry
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
};
/**
* Moves a directory to a new location
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DirectoryEntry} parent the directory to which to move the entry
* @param {DOMString} newName the new name of the entry, defaults to the current name
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
};
/**
* Removes the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with no parameters
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.remove = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
};
/**
* Returns a URI that can be used to identify this entry.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
* @return uri
*/
DirectoryEntry.prototype.toURI = function(mimeType) {
return "file://" + this.fullPath;
};
/**
* Creates a new DirectoryReader to read entries from this directory
*/
DirectoryEntry.prototype.createReader = function(successCallback, errorCallback) {
return new DirectoryReader(this.fullPath);
};
/**
* Creates or looks up a directory
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
* @param {Flags} options to create or excluively create the directory
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getDirectory", [this.fullPath, path, options]);
};
/**
* Creates or looks up a file
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
* @param {Flags} options to create or excluively create the file
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getFile", [this.fullPath, path, options]);
};
/**
* Deletes a directory and all of it's contents
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with no parameters
* @param {Function} errorCallback is called with a FileError
*/
DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "removeRecursively", [this.fullPath]);
};
/**
* An interface representing a directory on the file system.
*
* @constructor
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* {boolean} isFile always true (readonly)
* {boolean} isDirectory always false (readonly)
* {DOMString} name of the file, excluding the path leading to it (readonly)
* {DOMString} fullPath the absolute full path to the file (readonly)
* {FileSystem} filesystem on which the directory resides (readonly)
*/
var FileEntry = function() {
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
this.isFile = true;
this.isDirectory = false;
this.name = null;
this.fullPath = null;
this.filesystem = null;
};
/**
* Copies a file to a new location
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DirectoryEntry} parent the directory to which to copy the entry
* @param {DOMString} newName the new name of the entry, defaults to the current name
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
};
/**
* Looks up the metadata of the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with a Metadata object
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.getMetadata = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
};
/**
* Gets the parent of the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with a parent entry
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.getParent = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
};
/**
* Moves a directory to a new location
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DirectoryEntry} parent the directory to which to move the entry
* @param {DOMString} newName the new name of the entry, defaults to the current name
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
};
/**
* Removes the entry
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with no parameters
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.remove = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
};
/**
* Returns a URI that can be used to identify this entry.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
* @return uri
*/
FileEntry.prototype.toURI = function(mimeType) {
return "file://" + this.fullPath;
};
/**
* Creates a new FileWriter associated with the file that this FileEntry represents.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with the new FileWriter
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
this.file(function(filePointer) {
var writer = new FileWriter(filePointer);
if (writer.fileName === null || writer.fileName === "") {
2011-11-08 06:54:15 +08:00
if (typeof errorCallback === "function") {
errorCallback({
"code": FileError.INVALID_STATE_ERR
});
}
}
2011-11-08 06:54:15 +08:00
if (typeof successCallback === "function") {
successCallback(writer);
}
}, errorCallback);
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
};
/**
* Returns a File that represents the current state of the file that this FileEntry represents.
*
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
* @param {Function} successCallback is called with the new File object
* @param {Function} errorCallback is called with a FileError
*/
FileEntry.prototype.file = function(successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "getFileMetadata", [this.fullPath]);
};
/** @constructor */
var LocalFileSystem = function() {
};
// File error codes
LocalFileSystem.TEMPORARY = 0;
LocalFileSystem.PERSISTENT = 1;
LocalFileSystem.RESOURCE = 2;
LocalFileSystem.APPLICATION = 3;
/**
* Requests a filesystem in which to store application data.
*
* @param {int} type of file system being requested
* @param {Function} successCallback is called with the new FileSystem
* @param {Function} errorCallback is called with a FileError
*/
LocalFileSystem.prototype.requestFileSystem = function(type, size, successCallback, errorCallback) {
if (type < 0 || type > 3) {
2011-11-08 06:54:15 +08:00
if (typeof errorCallback === "function") {
errorCallback({
"code": FileError.SYNTAX_ERR
});
}
}
else {
PhoneGap.exec(successCallback, errorCallback, "File", "requestFileSystem", [type, size]);
}
};
/**
*
* @param {DOMString} uri referring to a local file in a filesystem
* @param {Function} successCallback is called with the new entry
* @param {Function} errorCallback is called with a FileError
*/
LocalFileSystem.prototype.resolveLocalFileSystemURI = function(uri, successCallback, errorCallback) {
PhoneGap.exec(successCallback, errorCallback, "File", "resolveLocalFileSystemURI", [uri]);
};
/**
* This function returns and array of contacts. It is required as we need to convert raw
* JSON objects into concrete Contact objects. Currently this method is called after
* navigator.service.contacts.find but before the find methods success call back.
*
* @param a JSON Objects that need to be converted to DirectoryEntry or FileEntry objects.
* @returns an entry
*/
LocalFileSystem.prototype._castFS = function(pluginResult) {
var entry = null;
entry = new DirectoryEntry();
entry.isDirectory = pluginResult.message.root.isDirectory;
entry.isFile = pluginResult.message.root.isFile;
entry.name = pluginResult.message.root.name;
entry.fullPath = pluginResult.message.root.fullPath;
pluginResult.message.root = entry;
return pluginResult;
};
LocalFileSystem.prototype._castEntry = function(pluginResult) {
var entry = null;
if (pluginResult.message.isDirectory) {
console.log("This is a dir");
entry = new DirectoryEntry();
}
else if (pluginResult.message.isFile) {
console.log("This is a file");
entry = new FileEntry();
}
entry.isDirectory = pluginResult.message.isDirectory;
entry.isFile = pluginResult.message.isFile;
entry.name = pluginResult.message.name;
entry.fullPath = pluginResult.message.fullPath;
pluginResult.message = entry;
return pluginResult;
};
LocalFileSystem.prototype._castEntries = function(pluginResult) {
var entries = pluginResult.message;
var retVal = [];
for (var i=0; i<entries.length; i++) {
retVal.push(window.localFileSystem._createEntry(entries[i]));
}
pluginResult.message = retVal;
return pluginResult;
};
LocalFileSystem.prototype._createEntry = function(castMe) {
var entry = null;
if (castMe.isDirectory) {
console.log("This is a dir");
entry = new DirectoryEntry();
}
else if (castMe.isFile) {
console.log("This is a file");
entry = new FileEntry();
}
entry.isDirectory = castMe.isDirectory;
entry.isFile = castMe.isFile;
entry.name = castMe.name;
entry.fullPath = castMe.fullPath;
return entry;
};
LocalFileSystem.prototype._castDate = function(pluginResult) {
if (pluginResult.message.modificationTime) {
var modTime = new Date(pluginResult.message.modificationTime);
pluginResult.message.modificationTime = modTime;
}
else if (pluginResult.message.lastModifiedDate) {
var file = new File();
file.size = pluginResult.message.size;
file.type = pluginResult.message.type;
file.name = pluginResult.message.name;
file.fullPath = pluginResult.message.fullPath;
file.lastModifiedDate = new Date(pluginResult.message.lastModifiedDate);
pluginResult.message = file;
}
return pluginResult;
};
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
/**
* Add the FileSystem interface into the browser.
*/
PhoneGap.addConstructor(function() {
var pgLocalFileSystem = new LocalFileSystem();
// Needed for cast methods
2011-11-08 06:54:15 +08:00
if (typeof window.localFileSystem === "undefined") {
window.localFileSystem = pgLocalFileSystem;
}
if (typeof window.requestFileSystem === "undefined") {
window.requestFileSystem = pgLocalFileSystem.requestFileSystem;
}
if (typeof window.resolveLocalFileSystemURI === "undefined") {
window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
}
File API: System and Directories http://www.w3.org/TR/file-system-api/ User can retrieve PERSISTENT and TEMPORARY file systems, list their contents, and manipulate files and directories within them. Modify existing FileWriter implementation ----------------------------------------- - Change the way user creates a FileWriter. User must either pass a File object to the FileWriter constructor, or use the FileEntry.createWriter() method. - Drop support for the 'filePath' and 'append' parameters in the FileWriter constructor. The file path is determined from either the File object passed to the FileWriter constructor, or the FileEntry object used to create the FileWriter. To append to a file, use the FileWriter object's seek method: // writer is a FileWriter object // seek to length of file to append writer.seek(writer.length); Replace FileMgr JavaScript APIs not specified in any File API spec ------------------------------------------------------------------ - Remove navigator.fileMgr.createDirectory(dirName) function. To create a directory, use the DirectoryEntry.getDirectory() method, which is part of the File API: Directories and System spec. Set the Flags.create to 'true': // directory is a DirectoryEntry object directory.getDirectory(path, {create:true}, successCB, failCB); - Remove navigator.fileMgr.getRootPaths() function. To retrieve the root file systems, use the window.requestFileSystem() function, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.getFileProperties(fileName) function. To get the properties of a file, use the FileEntry.file() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteFile(fileName) function. To delete a file, use the Entry.remove() method, which is part of the File API: Directories and System spec. - Remove navigator.fileMgr.deleteDirectory(dirName) function. To delete a directory, use the Entry.remove() (if it is empty), or DirectoryEntry.removeRecursively() methods, which are part of the File API: Directories and System spec. Clean up existing FileManager native code. Move some functionality to file utility class.
2011-02-04 06:44:33 +08:00
});
2011-11-08 06:54:15 +08:00
}