Seperti disebutkan sebelumnya, FileSystem dan File APIs, bersama dengan FileWriter API, dapat digunakan untuk membaca dan menulis file dari konteks tab / jendela browser ke mesin klien.
Ada beberapa hal yang berkaitan dengan FileSystem dan FileWriter API yang harus Anda ketahui, beberapa di antaranya disebutkan, tetapi patut diulang:
- Implementasi API saat ini hanya ada di browser berbasis Chromium (Chrome & Opera)
- Kedua API dikeluarkan dari jalur standar W3C pada 24 April 2014, dan sampai sekarang adalah milik
- Penghapusan API (sekarang milik) dari penerapan browser di masa depan adalah suatu kemungkinan
- Kotak pasir (lokasi pada disk di luar file yang tidak dapat menghasilkan efek) digunakan untuk menyimpan file yang dibuat dengan API
- Sistem file virtual (struktur direktori yang tidak perlu ada pada disk dalam bentuk yang sama ketika diakses dari dalam browser) digunakan mewakili file yang dibuat dengan API.
Berikut adalah contoh sederhana tentang bagaimana API digunakan, secara langsung dan tidak langsung, bersama-sama melakukan hal-hal ini:
BakedGoods *
Menulis file:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
Baca file:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
Menggunakan File mentah, FileWriter, dan FileSystem API
Menulis file:
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);
Baca file:
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);
Meskipun FileSystem dan FileWriter API tidak lagi sesuai standar, penggunaannya dapat dibenarkan dalam beberapa kasus, menurut saya, karena:
- Minat baru dari vendor browser yang tidak menerapkan dapat menempatkan mereka kembali di atasnya
- Penetrasi pasar untuk penerapan browser (berbasis Chromium) tinggi
- Google (kontributor utama untuk Chromium) belum memberikan dan tanggal berakhirnya masa pakai API
Apakah "beberapa kasus" mencakup kasus Anda, apakah Anda yang memutuskan.
* BakedGoods dikelola oleh orang lain di sini :)