lib/Ext/device/filesystem/HTML5.js
function(config) {
                var me = this;
                var originalConfig = Ext.applyIf({}, config);
                if (this.fileSystem) {
                    var failure = function(evt) {
                        if ((config.options && config.options.create) && Ext.isString(this.path)) {
                            var folders = this.path.split("/");
                            if (folders[0] == '.' || folders[0] == '') {
                                folders = folders.slice(1);
                            }

                            if (folders.length > 1 && !config.recursive === true) {
                                folders.pop();

                                var dirEntry = Ext.create('Ext.device.filesystem.DirectoryEntry', folders.join("/"), me.fileSystem);
                                dirEntry.getEntry(
                                    {
                                        options: config.options,
                                        success: function() {
                                            originalConfig.recursive = true;
                                            me.getEntry(originalConfig);
                                        },
                                        failure: config.failure
                                    }
                                );
                            } else {
                                if (config.failure) {
                                    config.failure.call(config.scope || me, evt);
                                }
                            }
                        } else {
                            if (config.failure) {
                                config.failure.call(config.scope || me, evt);
                            }
                        }
                    };

                    this.fileSystem.fs.root.getFile(this.path, config.options || null,
                        function(fileEntry) {
                            fileEntry.file(
                                function(file) {
                                    me.length = file.size;
                                    originalConfig.success.call(config.scope || me, fileEntry);
                                },
                                function(error) {
                                    failure.call(config.scope || me, error);
                                }
                            );
                        },
                        function(error) {
                            failure.call(config.scope || me, error);
                        }
                    );
                } else {
                    config.failure({code: -1, message: "FileSystem not Initialized"});
                }
            }
function(config) {
                var me = this;
                var originalConfig = Ext.applyIf({}, config);
                if (this.fileSystem) {
                    var failure = function(evt) {
                        if ((config.options && config.options.create) && Ext.isString(this.path)) {
                            var folders = this.path.split("/");
                            if (folders[0] == '.' || folders[0] == '') {
                                folders = folders.slice(1);
                            }

                            if (folders.length > 1 && !config.recursive === true) {
                                folders.pop();

                                var dirEntry = Ext.create('Ext.device.filesystem.DirectoryEntry', folders.join("/"), me.fileSystem);
                                dirEntry.getEntry(
                                    {
                                        options: config.options,
                                        success: function() {
                                            originalConfig.recursive = true;
                                            me.getEntry(originalConfig);
                                        },
                                        failure: config.failure
                                    }
                                );
                            } else {
                                if (config.failure) {
                                    config.failure.call(config.scope || me, evt);
                                }
                            }
                        } else {
                            if (config.failure) {
                                config.failure.call(config.scope || me, evt);
                            }
                        }
                    };

                    this.fileSystem.fs.root.getFile(this.path, config.options || null,
                        function(fileEntry) {
                            fileEntry.file(
                                function(file) {
                                    me.length = file.size;
                                    originalConfig.success.call(config.scope || me, fileEntry);
                                },
                                function(error) {
                                    failure.call(config.scope || me, error);
                                }
                            );
                        },
                        function(error) {
                            failure.call(config.scope || me, error);
                        }
                    );
                } else {
                    config.failure({code: -1, message: "FileSystem not Initialized"});
                }
            }
Requests a File Handle from the Local File System

@param {Object} config

@param {String} config.file
Filename optionally including path in string format '/tmp/debug.txt' or a File Object

@param {Object} config.options
File creation options {create:true, exclusive:false}

@param {Boolean} config.options.create
Indicates if the file should be created if it doesn't exist

@param {Boolean} config.options.exclusive
Used with the create option only indicates whether a creation causes an error if the file already exists

@param {Function} config.success
The function called when the filesystem is returned successfully

@param {FileSystem} config.success.entry

@param {Function} config.failure
The function called when the filesystem request causes and error

@param {FileError} config.failure.error