Daha önce belirtildiği gibi, FileSystem ve File API'leri, FileWriter API ile birlikte, tarayıcı sekmesi / penceresi bağlamından bir istemci makineye dosya okumak ve yazmak için kullanılabilir.
Dikkat edilmesi gereken FileSystem ve FileWriter API'leriyle ilgili, bazıları belirtilmiş, ancak tekrar edilmeye değer birkaç şey vardır:
- API'ların uygulamaları şu anda yalnızca Chromium tabanlı tarayıcılarda (Chrome ve Opera) bulunmaktadır
- Her iki API da 24 Nisan 2014 tarihinde W3C standartlarından çıkarıldı ve şu an için tescilli
- Gelecekte (artık tescilli) API'lerin tarayıcı uygulamaktan kaldırılması bir olasılıktır
- API'lerle oluşturulan dosyaları saklamak için bir korumalı alan (diskin üzerinde dosyaların hiçbir etki yaratmayacağı bir konum) kullanılır
- Bir sanal dosya sistemi kullanılır (mutlaka tarayıcınızdan erişebilirsiniz olmadığını aynı formda diskte bulunmayan bir dizin yapısı) API'leri ile oluşturulmuş dosyaları temsil
API'lerin bunları yapmak için doğrudan ve dolaylı olarak nasıl kullanıldığına dair basit örnekler:
BakedGoods *
Dosya yaz:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
Dosyayı oku:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
Ham File, FileWriter ve FileSystem API'lerini kullanma
Dosya yaz:
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);
Dosyayı oku:
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);
FileSystem ve FileWriter API'leri artık standartlar üzerinde yer almasa da, bazı durumlarda kullanımları haklı olabilir, çünkü:
- Uygulama dışı bırakılan tarayıcı satıcılarının ilgisinin artması, onları doğrudan sitenin üzerine yerleştirebilir
- Uygulama (Chromium tabanlı) tarayıcıların pazara nüfuzu yüksektir
- Google (Chromium'un ana katkısı), API'lara kullanım süresi dolmadı ve kullanım ömrü sonu
Bununla birlikte, "bazı vakaların" kendi davalarınızı kapsaması, sizin karar vermeniz içindir.
* BakedGoods, buradaki başka biri tarafından korunmuyor :)