Como se mencionó anteriormente, los FileSystem y File API, junto con la API FileWriter, se puede utilizar para leer y escribir archivos desde el contexto de una pestaña del navegador/ventana a una máquina cliente.
Hay varias cosas que pertenecen al sistema de archivos y las API FileWriter que se debe tener en cuenta, algunos de los cuales fueron mencionados, pero vale la pena repetir
:
- Las implementaciones de las API actualmente sólo existen en cromo basados en los navegadores (Chrome & Opera)
- Tanto de las API fueron llevados fuera de los estándares del W3C el 24 de abril de 2014, ya partir de ahora son propiedad de
- la eliminación de las APIs (ahora propiedad) de los navegadores de aplicación en el futuro es una posibilidad
- Un caja de arena (una ubicación en el disco fuera de la cual los archivos se pueden producir ningún efecto) se utiliza para almacenar los archivos creados con la API de
- Un sistema de archivos virtual (una estructura de directorios que no necesariamente existe en el disco de la misma forma que lo hace cuando se accede desde el navegador) se utiliza representar los archivos creados con la API de
Éstos son ejemplos sencillos de cómo se utilizan las API, directa e indirectamente, de forma conjunta para hacer estas cosas :
BakedGoods *
Escribir archivo: archivo
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
Leer:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
Uso del archivo crudo, FileWriter, y las API de FileSystem archivo
Comentario:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
de archivos de lectura:
function onQuotaRequestSuccess(grantedQuota)
{
function getfile(directoryEntry)
{
function readFile(fileEntry)
{
function read(file)
{
var fileReader = new FileReader();
fileReader.onload = function(){var fileData = fileReader.result};
fileReader.readAsText(file);
}
fileEntry.file(read);
}
directoryEntry.getFile(
"testFile",
{create: false},
readFile
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
Teniendo en cuenta los estados actuales del sistema de archivos y APIs FileWriter, su utilización para leer y escribir archivos actualmente no constituye una "forma de HTML5" de hacer las cosas.
Sin embargo, el renovado interés en las API por parte de los proveedores de navegadores que no implementan puede colocarlos de nuevo en la ruta de estándares. Eso, combinado con la alta penetración en el mercado de los navegadores basados en Chromium y el hecho de que Google (el principal contribuyente a Chromium) no ha dado y la fecha de finalización de la vida de las API debería ser suficiente para justificar su uso en algunos casos.
Bakedgoods * se mantiene por nada menos que este individuo aquí :)
¿Cómo te va con este en el final? Estoy haciendo el mismo análisis en aplicaciones de navegador con acceso completo al sistema de archivos. Gracias – Dave