diff --git a/hardware/esp8266com/esp8266/cores/esp8266/FS.cpp b/hardware/esp8266com/esp8266/cores/esp8266/FS.cpp index 7a13dcede8..125ac527cb 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/FS.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/FS.cpp @@ -144,6 +144,14 @@ String Dir::fileName() { return _impl->fileName(); } +size_t Dir::fileSize() { + if (!_impl) { + return 0; + } + + return _impl->fileSize(); +} + bool Dir::next() { if (!_impl) { return false; diff --git a/hardware/esp8266com/esp8266/cores/esp8266/FS.h b/hardware/esp8266com/esp8266/cores/esp8266/FS.h index 3e1b1b4fc1..4009bb2f24 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/FS.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/FS.h @@ -78,6 +78,7 @@ class Dir { File openFile(const char* mode); String fileName(); + size_t fileSize(); bool next(); protected: diff --git a/hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h b/hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h index 8e48a9fda0..20d886e764 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h @@ -56,6 +56,7 @@ class DirImpl { virtual ~DirImpl() { } virtual FileImplPtr openFile(OpenMode openMode, AccessMode accessMode) = 0; virtual const char* fileName() = 0; + virtual size_t fileSize() = 0; virtual bool next() = 0; }; diff --git a/hardware/esp8266com/esp8266/cores/esp8266/spiffs_api.cpp b/hardware/esp8266com/esp8266/cores/esp8266/spiffs_api.cpp index 157ae86bcd..d9c7c618f4 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/spiffs_api.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/spiffs_api.cpp @@ -308,6 +308,13 @@ class SPIFFSDirImpl : public DirImpl { return (const char*) _dirent.name; } + size_t fileSize() override { + if (!_valid) + return 0; + + return _dirent.size; + } + bool next() override { spiffs_dirent* result = SPIFFS_readdir(&_dir, &_dirent); _valid = (result != nullptr);