diff --git a/src/plugins/file.ts b/src/plugins/file.ts index 35ff868fe..37c976d95 100644 --- a/src/plugins/file.ts +++ b/src/plugins/file.ts @@ -50,7 +50,11 @@ export class File { if ((/^\//.test(dir))) { rejectFn('directory cannot start with \/'); } - + + if (!(/\/$/.test(noSlash))) { + path += "/"; + } + try { var directory = path + dir; @@ -351,6 +355,10 @@ export class File { rejectFn('file cannot start with \/'); } + if (!(/\/$/.test(noSlash))) { + path += "/"; + } + try { var directory = path + file; @@ -462,7 +470,57 @@ export class File { // static writeExistingFile(path: string, fileName: string, text: string): Promise { return } - // static readAsText(path: string, file: string): Promise { return } + /** + * Read a file as string. + * + * @param {string} path Base FileSystem. Please refer to the iOS and Android filesystems above + * @param {string} fileName Name of file to move + * @return Returns a Promise that resolves or rejects with an error. + */ + static readAsText(path: string, fileName: string): Promise { + let resolveFn, rejectFn; + let promise = new Promise((resolve, reject) => {resolveFn = resolve; rejectFn = reject; }); + + if ((/^\//.test(fileName))) { + rejectFn('file-name cannot start with \/'); + } + + try { + window.resolveLocalFileSystemURL(path, function (fileSystem) { + fileSystem.getFile(fileName, {create: false}, function (fileEntry) { + fileEntry.file(function (file) { + var reader = new FileReader(); + + reader.onloadend = function(e) { + if (this.result !== undefined && this.result !== null) { + resolveFn(this.result); + } else if (this.error !== undefined && this.error !== null) { + rejectFn(this.error); + } else { + rejectFn({code: null, message: 'READER_ONLOADEND_ERR'}); + } + } + + reader.readAsText(file); + }, function (error) { + error.message = File.cordovaFileError[error.code]; + rejectFn(error); + }); + }, function (err) { + err.message = File.cordovaFileError[err.code]; + rejectFn(err); + }); + }, function (er) { + er.message = File.cordovaFileError[er.code]; + rejectFn(er); + }); + } catch (e) { + e.message = File.cordovaFileError[e.code]; + rejectFn(e); + } + + return promise; + } // static readAsDataURL(path: string, file: string): Promise { return }