Я пишу приложение на основе html и хочу хранить и извлекать данные из локального файла. Это приложение не будет размещено на веб-сервере.
Кто-нибудь может помочь рассказать о том, как это можно сделать?
Я пишу приложение на основе html и хочу хранить и извлекать данные из локального файла. Это приложение не будет размещено на веб-сервере.
Кто-нибудь может помочь рассказать о том, как это можно сделать?
Вам следует использовать API-интерфейс FileSystem HTML5:
window.requestFileSystem(window.TEMPORARY, 5*1024*1024, function(){
fs.root.getFile('test.dat', {}, function(fileEntry) {
fileEntry.file(function(file) {
// Here is our file object ...
});
});
}, errorHandler);
Оформить заказ API файловой системы для получения дополнительной справки
Посетите Тест HTML5 для проверки поддержки браузера
Попробуйте HTML 5 API файловой системы
Ниже приведены ссылки
IF (и только если) вы - платформа, будет IE, вы можете использовать инфраструктуру HTA (HTML Applications):
http://msdn.microsoft.com/en-us/library/ms536471(VS.85).aspx
Приложениям, использующим это, предоставляются привилегии на системном уровне и могут использовать те же объекты, что и хост Windows Scripting (например, объект файловой системы для чтения и доступа к локальным файлам).
Я использовал его успешно в прошлом для небольших приложений для рабочих групп и ему понравилось - но это было в корпоративной среде только для IE.
Ответ на этот вопрос зависит от ваших ответов на следующие вопросы:
Если вы ответили "да" на все вышеперечисленное, затем File, FileWriter и FileSystem, вы можете записывать файлы из контекста вкладки/окна браузера с помощью Javascript.
Как вы спросили?
Записать файл:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
Считать файл:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
Использование необработанных файлов, API FileWriter и FileSystem
Записать файл:
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);
Считать файл:
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);
Но что, если вы ответили "нет" на какие-либо вопросы в начале?
Если вы открыты для не-родных решений, Silverlight также позволяет делать ввод/вывод файлов из конкурса вкладок/окон через IsolatedStorage. Однако управляемый код необходим для использования этого средства; решение, требующее написания такого кода, выходит за рамки этого вопроса.
Конечно, решение, которое использует дополнительный управляемый код, оставляя его только с Javascript для записи, вполне входит в сферу этого вопроса;):
//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem", "silverlight"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
* BakedGoods поддерживается не кем иным, как этим парнем прямо здесь:)