Espruino:Справочник по API/Класс StorageFile: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 4: | Строка 4: | ||
=Класс StorageFile<ref>[https://www.espruino.com/Reference#StorageFile www.espruino.com - StorageFile Class]</ref>= | =Класс StorageFile<ref>[https://www.espruino.com/Reference#StorageFile www.espruino.com - StorageFile Class]</ref>= | ||
Эти объекты создаются при помощи require("Storage").open и позволяют записывать/считывать данные из объектов Storage. | |||
Библиотека [https://www.espruino.com/Reference#Storage Storage] записывает данные в flash-память (которую можно стирать только кусочками) и в отличие от обычной файловой системы выделяет память под файлы одной большой смежной областью, чтобы Espruino было проще получить к ним доступ. | |||
Это представляет трудность для класса StorageFile, позволяющего добавлять данные в файл, и поэтому StorageFile сохраняет файлы кусочками. В нем последний символ названия файла обозначает номер кусочка файла (например, "foobar\1", "foobar\2" и т.д.). | |||
Это значит, что хотя файлы типа StorageFile хранятся в одной области с файлами типа [https://www.espruino.com/Reference#Storage Storage], их все же нужно читать с помощью функции StorageFile.open(), а не [https://www.espruino.com/Reference#l_Storage_read 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(); | |||
'''Примечание:''' Для определения конца файла класс [https://www.espruino.com/Reference#StorageFile StorageFile] использует тот факт, что все биты стертой flash-памяти являются единицами. Поэтому нельзя записывать в эти файлы символьный код 255 ("\xFF"). | |||
* [[Espruino:Справочник по API/Класс StorageFile/erase()|erase()]] | * [[Espruino:Справочник по API/Класс StorageFile/erase()|erase()]] |
Версия от 15:09, 28 февраля 2021
Класс 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();
Примечание: Для определения конца файла класс StorageFile использует тот факт, что все биты стертой flash-памяти являются единицами. Поэтому нельзя записывать в эти файлы символьный код 255 ("\xFF").
См.также
Внешние ссылки