LittleFSしたい
#include <LittleFS.h>
LittleFSはマイコンのフラッシュ領域にファイルを保存できるライブラリです。
ESP32などのマイコンには、揮発性メモリ(DRAM)と不揮発性メモリ(フラッシュ)の領域があります。
揮発性メモリは電源が落ちると消去される領域です。 プログラム実行時の変数や一時データを保存するのに使われます。 不揮発性メモリは電源が落ちても保存される領域です。 プログラムやファイルなどの永続データを保存するのに使われます。
LittleFSはフラッシュ領域をファイルシステムとして分割し、通常のファイル操作(読み書き、削除など)を可能にします。
警告
フラッシュ領域には書き込み回数の制限(一般に約10万~100万回)があります。
ESP32で初期化したい
1#include <LittleFS.h>
2
3void setup() {
4 Serial.begin(115200);
5
6 if (!LittleFS.begin()) {
7 Serial.println("LittleFS Mount Failed");
8 return;
9 }
10 Serial.println("LittleFS Mounted Successfully");
11}
12
13void loop() {
14 // Your code here
15}
ESP32のArduino Core2.0以降では、LittleFSが標準で含まれています。
ESP8266で初期化したい
1#include "LittleFS.h"
2
3void setup() {
4 Serial.begin(115200);
5
6 if (!LittleFS.begin()) {
7 Serial.println("LittleFS mount failed");
8 return;
9 }
10 Serial.println("LittleFS mounted successfully");
11}
12
13void loop() {
14 // Your code here
15}
ESP8266のArduinoコアには、LittleFSがビルトインされています。
ファイルの管理
ファイルを削除したい
1void setup() {
2 LittleFS.begin();
3
4 if (LittleFS.remove("/old_config.txt")) {
5 Serial.println("File deleted");
6 } else {
7 Serial.println("Delete failed");
8 }
9}
10
11void loop() {}
ファイルが存在するか確認したい
1void setup() {
2 LittleFS.begin();
3
4 if (LittleFS.exists("/config.txt")) {
5 Serial.println("File exists");
6 } else {
7 Serial.println("File does not exist");
8 }
9}
10
11void loop() {}
ファイル名を変更したい
1void setup() {
2 LittleFS.begin();
3 LittleFS.rename("/old.txt", "/new.txt");
4}
5
6void loop() {}
ディレクトリの操作
ディレクトリの中身を一覧表示したい
1#include <LittleFS.h>
2
3void listDir(const char *dirname, uint8_t levels) {
4 File root = LittleFS.open(dirname);
5 if (!root || !root.isDirectory()) {
6 Serial.println("Failed to open directory");
7 return;
8 }
9
10 File file = root.openNextFile();
11 while (file) {
12 if (file.isDirectory()) {
13 Serial.print("DIR : ");
14 Serial.println(file.name());
15 if (levels) {
16 listDir(file.path(), levels - 1);
17 }
18 } else {
19 Serial.print("FILE: ");
20 Serial.print(file.name());
21 Serial.print(" SIZE: ");
22 Serial.println(file.size());
23 }
24 file = root.openNextFile();
25 }
26}
27
28void setup() {
29 LittleFS.begin();
30 listDir("/", 1);
31}
32
33void loop() {}
ディレクトリを作成したい
1void setup() {
2 LittleFS.begin();
3 LittleFS.mkdir("/data");
4}
5
6void loop() {}
ディレクトリを削除したい
1void setup() {
2 LittleFS.begin();
3 LittleFS.rmdir("/data");
4}
5
6void loop() {}
フラッシュメモリの情報
容量情報を確認したい
1// ESP32
2void setup() {
3 LittleFS.begin();
4 Serial.printf("Total: %u bytes\n", LittleFS.totalBytes());
5 Serial.printf("Used: %u bytes\n", LittleFS.usedBytes());
6}
7
8void loop() {}
ファイルをアップロードしたい
Arduino IDEを使ってパソコン上のファイルをマイコンのフラッシュメモリにアップロードするには、LittleFSアップローダーを使用します。
準備手順
LittleFSアップローダーをインストール
Arduino IDE 2.x:プラグイン機能から「LittleFS Upload」をインストール
スケッチのフォルダーに
dataフォルダーを作成Sketch > Show Sketch Folder でスケッチフォルダーを開く
dataというフォルダーを作成ここにアップロードしたいファイル(HTMLファイルなど)を配置
シリアルモニターを閉じる(重要)
アップローダーを実行
Ctrl+Shift+P(Mac: Cmd+Shift+P)でコマンドパレットを開き、「Upload LittleFS」を実行
アップロード後の確認
1#include <LittleFS.h>
2
3void listDir(const char *dirname, uint8_t levels) {
4 File root = LittleFS.open(dirname);
5 if (!root || !root.isDirectory()) return;
6
7 File file = root.openNextFile();
8 while (file) {
9 Serial.print("FILE: ");
10 Serial.println(file.name());
11 file = root.openNextFile();
12 }
13}
14
15void setup() {
16 Serial.begin(115200);
17 LittleFS.begin();
18 listDir("/", 1);
19}
20
21void loop() {}
ファイルモード
ファイルを開く際に、以下のモードを指定できます:
モード |
説明 |
|---|---|
|
読み込みのみ |
|
上書き(既存ファイルは削除) |
|
追記 |
関連メソッド
メソッド |
説明 |
|---|---|
|
読み込み可能なバイト数 |
|
1バイト読み込む |
|
データを書き込む |
|
テキストを書き込む |
|
テキストを改行付きで書き込む |
|
ファイルポジションを移動 |
|
ファイルサイズ(バイト) |
|
ファイル名 |
|
ファイルを閉じる |
|
ディレクトリかどうか判定 |