FileUtils
: Допоміжні функції для роботи з файлами
-
FileUtils lilka::fileutils
Екземпляр класу
FileUtils
, який можна використовувати для роботи з дисплеєм. Вам не потрібно інстанціюватиFileUtils
вручну.
-
class FileUtils
Клас, що містить допоміжні функції для роботи з файловими системами.
Цей клас НЕ містить методів типу
open
,read
,write
і т.д., оскільки ці методи вже є в класахSD
таSPIFFS
і для роботи з файлами вам слід використовуйте саме їх, оскільки вони добре документовані та легкі в використанні: https://www.arduino.cc/reference/en/libraries/sd/Тому у цьому класі ви знайдете лише допоміжні методи, такі як ініціалізація носіїв даних, перетворення шляхів, читання директорії, перевірка доступності файлових систем тощо.
Крім цього, деякий сторонній код (наприклад, емулятор NES чи рушій Doom) працюють з файлами через стандартні функції Сі, тому цей клас містить методи для перетворення канонічних шляхів в локальні та навпаки.
Локальний шлях - це такий, який визначається відносно кореня носія даних (наприклад,
/test.txt
). В більшості випадків ви будуте працювати лише з локальними шляхами. Наприклад,File test = SD.open("/test.txt")
відкриє файлtest.txt
з SD-карти.Канонічний шлях - це такий, який визначається відносно кореня віртуальної файлової системи ESP32 (наприклад,
/sd/test.txt
). Ви можете використовувати канонічні шляхи для взаємодії з файлами через стандартні функції Сі, наприкладFILE* test = fopen("/sd/test.txt", "r")
.
Детальніше про віртуальну файлову систему ESP32 можна прочитати тут: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/storage/vfs.html
Public Functions
-
void begin(bool beginSD = true, bool beginSPIFFS = true)
Ініціалізувати SPIFFS та SD-карту
Попередження
Цей метод викликається автоматично при виклику
lilka::begin()
.
-
bool initSD()
Ініціалізувати SD-карту
-
void initSPIFFS()
Ініціалізує SPIFFS.
-
uint32_t getEntryCount(FS *driver, const String &localPath)
Кількість елементів у директорії
- Параметри:
driver – драйвер файлової системи
localPath – шлях до директорії
- Повертає:
кількість елементів
-
const String getSDRoot()
Канонічний шлях до SD
- Повертає:
канонічний шлях (наприклад,
/sd
)
-
const String getSPIFFSRoot()
Канонічний шлях до SPIFFS
- Повертає:
канонічний шлях (наприклад,
/spiffs
)
-
bool isSDAvailable()
Перевірити, чи доступна SD картка
- Повертає:
true у разі успіху
-
bool isSPIFFSAvailable()
Перевірити, чи доступна SPIFFS
- Повертає:
true у разі успіху
-
const String getCannonicalPath(const FS *driver, const String &localPath)
Перетворити локальний шлях в канонічний
Приклад використання:
String localPath = "/test.txt"; String cannonicalPath = fileutils.getCannonicalPath(&SD, localPath); // cannonicalPath міститиме рядок "/sd/test.txt" FILE* test = fopen(cannonicalPath.c_str(), "r"); // Відкрити файл "/sd/test.txt" з SD-карти
- Параметри:
driver – драйвер файлової системи
localPath – локальний шлях
- Повертає:
канонічний шлях
-
const PathInfo getLocalPathInfo(const String &cannonicalPath)
Отримати інформацію про канонічний шлях
Використовується для перетворення канонічного шляху в локальний або для визначення драйвера файлової системи.
Приклад використання:
String cannonicalPath = "/sd/test.txt"; PathInfo pathInfo = fileutils.getLocalPathInfo(cannonicalPath); // pathInfo.driver міститиме вказівник на драйвер файлової системи SD // pathInfo.path міститиме рядок "/test.txt" File test = pathInfo.driver->open(pathInfo.path); // Відкрити файл "/test.txt" з SD-карти
- Параметри:
cannonicalPath – локальний шлях
- Повертає:
структуру PathInfo
-
size_t listDir(FS *driver, const String &localPath, Entry entries[])
Отримати елементи в директорії за відносним шляхом
- Параметри:
driver – драйвер файлової системи (наприклад,
&SD
)localPath – локальний шлях
entries – вказівник, за яким буде записано елементи
- Повертає:
кількість записаних елементів
-
const String joinPath(const String &lPath, const String &rPath)
Об’єднує шляхи
- Параметри:
lPath – ліва половина шляху
rPath – права половина шляху
- Повертає:
повний шлях
-
const String getParentDirectory(const String &path)
Отримати шлях до директорії в якій лежить файл
- Параметри:
path – Шлях до файлу
- Повертає:
шлях
-
bool createSDPartTable()
Створити нову таблицю розділів на SD картці
Попередження
Після виклику цієї функції необхідно перезавантажити систему
- Повертає:
true у разі успіху
-
bool formatSD()
Форматувати SD картку
Попередження
Після виклику цієї функції необхідно перезавантажити систему
- Повертає:
true у разі успіху
-
const String stripPath(const String &path)
Обрізати слеші в кінці шляху.
- Параметри:
path – Шлях до файлу
- Повертає:
Шлях без кінцевих слешів
-
const String getHumanFriendlySize(const size_t size, bool compact = false)
Повернути розмір в читабельному форматі (наприклад, 101 MB).
fileutils.getHumanFriendlySize(1234567); // Поверне "1.23 MB"
- Параметри:
size – Розмір (в байтах)
compact – Чи виводити розмір компактно (наприклад, 1.23MB замість 1.23 MB)
- Повертає:
Рядок, що містить читабельний розмір з суфіксами одиниць виміру
-
struct PathInfo
Інформація про шлях
-
struct Entry
Інформація про елемент в директорії