SPIFFSで警告が
最近SPIFFSを使ったスケッチをコンパイルすると、
SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.
と言う警告が出るようになりました。この警告の意味は、”SPIFFSは非推奨です。LittleFSか他のファイルシステムを考慮ください”。以前は警告無くコンパイル出来ていたのですが。スケッチ自体は問題無く動くのですが、コンパイルで警告が出るのはあまり気分の良いものでは無いので、LittleFSについて調べて見ました。
LittleFS
Webで検索すると、”https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html”を見つけました。SPIFFSと比較して違いを説明しています。
- SPIFFSは現在非推奨で将来削除される可能性がある。
- LittleFSの方がSIPFFSより何倍も高速
- LittleFSがファイル名として使用出来のは32文字。実際には31文字+terminating
- SPIFFSはdirectoryをサポートしていないが、LittleFSはサポートしている
- Subdirectoryはスケッチ上から任意に製作、削除が可能。
- SystemへのUploadは、ESP8266 LittleFS Data Uploadを使用
- SPIFFSからLittleFSに変換するには、SPIFFS.begin()をLittleFS.begin()に、SPIFFS.open()をLittleFS.open()の様に行う
簡単に、”SPIFFS”から”LittleFS”に移行できそうです。
実際のスケッチ
簡単にスケッチを書いて見ました。
#include "LittleFS.h"
void setup()
{
File dataFile;
String buf;
Serial.begin(115200);
delay(500);
LittleFS.begin();
Serial.println("LittleFS started");
dataFile = LittleFS.open("test.txt", "w");
dataFile.println("root_dir");
dataFile.close();
dataFile = LittleFS.open("123/test.txt", "w");
dataFile.println("sub_dir");
dataFile.close();
dataFile = LittleFS.open("test.txt", "r");
buf = dataFile.readStringUntil('\n');
dataFile.close();
Serial.println("buf=" + buf);
dataFile = LittleFS.open("123/test.txt", "r");
buf = dataFile.readStringUntil('\n');
dataFile.close();
Serial.println("buf=" + buf);
}
void loop()
{
}
- 1行 #include “LittleFS.h”
- ヘッダーの読み込み
- 5行 File dataFile;
- File型変数の宣言
- 11行 LittleFS.begin();
- LittleFSの開始
- 14から16行 ファイルの新規作成(ルートディレクトリ)
- ルートディレクトリに、”root_dir”と書いた”test.txt”ファイルを作成。
- 18から20行 ファイルの新規作成(サブディレクトリ)
- サブディレクトリに、”sub_dir”と書いた”test.txt”ファイルを作成。
- 22から25行
- ルートディレクトリの”test.txt”ファイル読み出しと表示。
- 27から30行
- サブディレクトリの”test.txt”ファイル読み出しと表示。
今回はESP8266を使用しています。スケッチを実行して下さい。シリアルモニタに

と結果が表示されます。正しく動作している様です。
データのUpload
SystemへデータをUploadするには、ESP8266 LittleFS Data Uploadをインストールする必要が有ります。”https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html”にインストール方法が説明されています。
- Download the 2.6.0 or later version of the tool: https://github.com/earlephilhower/arduino-esp8266littlefs-plugin/releases
- ダウンロードしたファイルを解凍すると、ESP8266LittleFS-2.6.0/ESP8266LittleFS/tool/esp8266littlefs.jar”が出来る。
- コピーするのは解凍したファイルの、”ESP8266LittleFS”ホルダー。
- スケッチのディレクトリに ”
tools
” ディレクトリがなければ製作。- スケッチディレクトリの場所ですがIDEで、ファイル>環境設定と選択すると、開いたウインドウの上部に、”スケッチブックの保存場所”が表示されます。
- そこに”
tools
” ディレクトリがなければ製作。
- ダウンロードしたファイルを解凍して”
tools
”にコピー- ”
tools
” ディレクトリに”ESP8266LittleFS”ホルダーをコピー
- ”
- Arduino IDEを再起動。
- スケッチを開いて、”スケッチ > スケッチフォルダーの表示”を選択
- そこに、”data”フォルダーを製作。その中にデータファイルを保存。
- ボードが正しく選ばれていることを確認.。シリアルモニタは閉じる。
- IDEで、ツール>flash size を選択するとボードに合ったFlash Sizeを選択出来ます。
- ボードを書き込み状態に設定。
- IDEで、ツール>ESP8266 Sketch Data Uploadを選択してデータをUploadする。
SubDirectryを持ったデータのUpload
Upload するデータはスケッチ内の”data” ディレクトリに保存します。
- ”data” ディレクトリに、”test.txt”を作成
- ファイルの中身は、”root_dir” とする。
- ”data” ディレクトリにSubDirectry、”123”を作成して、その中に、”test.txt”を保存
- ファイルのパス: 123/test.txt
- ファイルの中身は、”sub_dir” とする。
これで、”root_dir” と書かれた”test.txt”がルートディレクトリに、”sub_dir”と書かれた”test.txt”が、サブディレクトリ “123/” に保存された事になります。下記は各々のファイルを表示するスケッチです。
#include "LittleFS.h"
void setup()
{
File dataFile;
String buf;
Serial.begin(115200);
delay(500);
LittleFS.begin();
Serial.println("LittleFS started");
dataFile = LittleFS.open("test.txt", "r");
buf = dataFile.readStringUntil('\n');
dataFile.close();
Serial.println("buf=" + buf);
dataFile = LittleFS.open("123/test.txt", "r");
buf = dataFile.readStringUntil('\n');
dataFile.close();
Serial.println("buf=" + buf);
}
void loop()
{
}
このスケッチをコンパイル。次に、ESP8266 Sketch Data Uploadを使ってデータをUploadした後、実行して下さい。シリアルモニタに想定通りの文字が表示されます。

最後に
確かにLittleFSはSPIFFSより機能が豊富です。でも一番嬉しいのは、サブディレクトリが使えることです。今後は、File systemとしてこの推奨されている、LittleFS を使って行きたいと思います。