Espruino:Справочник по API/Класс StorageFile: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 13: | Строка 13: | ||
Это значит, что хотя файлы типа StorageFile хранятся в одной области с файлами типа [https://www.espruino.com/Reference#Storage Storage], их все же нужно читать с помощью функции StorageFile.open(), а не [https://www.espruino.com/Reference#l_Storage_read Storage.read()]. | Это значит, что хотя файлы типа StorageFile хранятся в одной области с файлами типа [https://www.espruino.com/Reference#Storage Storage], их все же нужно читать с помощью функции StorageFile.open(), а не [https://www.espruino.com/Reference#l_Storage_read Storage.read()]. | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
f = s.open("foobar","w"); | f = s.open("foobar","w"); | ||
f.write("Hell"); | f.write("Hell"); | ||
Строка 38: | Строка 38: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Примечание1|Для определения конца файла класс [https://www.espruino.com/Reference#StorageFile StorageFile] использует тот факт, что все биты стертой flash-памяти являются единицами. Поэтому нельзя записывать в эти файлы символьный код 255 ("\xFF").}} | |||
* [[Espruino:Справочник по API/Класс StorageFile/erase()|erase()]] | * [[Espruino:Справочник по API/Класс StorageFile/erase()|erase()]] | ||
Строка 48: | Строка 48: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 54: | Строка 54: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 19:04, 24 июня 2023
Класс StorageFile[1]
Эти объекты создаются при помощи require("Storage").open и позволяют записывать/считывать данные из объектов Storage.
Библиотека Storage записывает данные в flash-память (которую можно стирать только кусочками) и в отличие от обычной файловой системы выделяет память под файлы одной большой смежной областью, чтобы Espruino было проще получить к ним доступ.
Это представляет трудность для класса StorageFile, позволяющего добавлять данные в файл, и поэтому StorageFile сохраняет файлы кусочками. В нем последний символ названия файла обозначает номер кусочка файла (например, "foobar\1", "foobar\2" и т.д.).
Это значит, что хотя файлы типа StorageFile хранятся в одной области с файлами типа Storage, их все же нужно читать с помощью функции StorageFile.open(), а не Storage.read().
f = s.open("foobar","w");
f.write("Hell");
f.write("o World\n");
f.write("Hello\n");
f.write("World 2\n");
// Вызывать 'close' нужды нет.
// Затем:
f = s.open("foobar","r");
f.read(13) // "Hello World\nH"
f.read(13) // "ello\nWorld 2\n"
f.read(13) // "Hello World 3"
f.read(13) // "\n"
f.read(13) // undefined
// ...или...
f = s.open("foobar","r");
f.readLine() // "Hello World\n"
f.readLine() // "Hello\n"
f.readLine() // "World 2\n"
f.readLine() // "Hello World 3\n"
f.readLine() // undefined
// Теперь избавляемся от файла:
f.erase();
См.также
Внешние ссылки