Opera se sube al carro de los widgets con la especificación de File I/O propuesta por la W3C. Con ella se pretende conseguir una abstracción en forma de sistema de ficheros donde alojar ficheros con permisos de lectura y escritura dentro de nuestro navegador.
Esto nos permitirá crear Widgets para este navegador en el cual podamos almacenar ficheros de los que podremos obtener y guardar datos que ayudarán a potenciar la aplicación.
Para aprovecharnos de esta especificación Opera nos brinda 3 objetos que contienen todas las funcionalidades posibles sobre la API. FileSystem, File y FileStream.
FIleSystem
Inicializado como un singleton, nos proporciona un sistema de ficheros virtual con el que trabajar.
opera.io.filesystem = function () {
mountPoints = {};
mountSystemDirectory = function ( location, name ) { ; }
removeMountPoint = function ( mountpoint ) { ; }
browseForDirectory = function ( name, defaultlocation, callback, persistent ) { ; }
browseForFile = function ( name, defaultlocation, callback, persistent, multiple, filter ) { ; }
browseForSave = function ( name, defaultlocation, callback, persistent ) { ; }
}
File
Al igual que otros frameworks, con File podemos apuntar a un directorio, archivo o ficheros regulares. Una vez cargado nos proporcionará una gran cantidad de propiedades y métodos para trabar con el fichero.
var File = function () {
parent = {};
readOnly = false;
exists = false;
isFile = false;
isDirectory = false;
isArchive = false;
metaData = null;
created = {};
modified = {};
name = '';
path = '';
nativePath = '';
maxPathLength = 0;
fileSize = 0;
length = 0;
open = function ( path, mode ) { ; }
copyTo = function ( path, overwrite, callback ) { ; }
moveTo = function ( path, overwrite, callback ) { ; }
createDirectory = function ( directory ) { ; }
deleteDirectory = function ( directory, recursive ) { ; }
deleteFile = function ( file ) { ; }
refresh = function () { ; }
resolve = function ( path ) { ; }
toString = function () { ; }
}
FileStream
Será usado cuando se quiera leer o escribir sobre un fichero, soporta lectura y escritura de text, imagenes, datos binários y texto en Base64.
var FileStream = function () {
position = 0;
bytesAvailable = 0;
eof = false;
encoding = '';
close = function ( ) { ; }
read = function ( length, charset ) { ; }
readLine = function ( charset ) { ; }
readBytes = function ( length ) { ; }
readBase64 = function ( length ) { ; }
write = function ( string, charset ) { ; }
writeLine = function ( string, charset ) { ; }
writeBytes = function ( bytes, length ) { ; }
writeBase64 = function ( string ) { ; }
writeFile = function ( file ) { ; }
writeImage = function ( image ) { ; }
}
Podemos probarlo con la última release de la versión 9.5





