SPIFFS已被拋棄, ????, 原因參考: https://www.bilibili.com/video/BV1kR4y1o7H7 現(xiàn)在我們使用LittleFS代替它, 請參考后續(xù)文章 一. 文件系統(tǒng) SPIFFS ESP32 自帶SPIFFS.h庫用來管理文件系統(tǒng) 注意: 此文件系統(tǒng)是沒用文件層次的 比如你建立一個 /doc/test.txt 那這個txt的名字就是 doc/test, 而不是在doc目錄下有個 test.txt #include 'SPIFFS.h' 二. SPIFFS相關(guān)函數(shù) 1. SPIFFS.begin(); //開啟SPIFFS 參數(shù):- formatOnFail : 打開失敗就格式化 (bool)- *basePath : 根目錄 - maxOpenFiles : 最大可打開文件數(shù)量 返回值: 打開成功或者失敗bool fs::SPIFFSFS::begin(bool formatOnFail = false, const char *basePath = '/spiffs', uint8_t maxOpenFiles = (uint8_t)'n') SPIFFS.begin(); 2. SPIFFS.open //創(chuàng)建或打開文件 參數(shù):- path : 文件路徑- mode : 打開方式, 可選: FILE_READ (讀文件) FILE_WRITE (寫文件) FILE_APPEND (添加內(nèi)容)返回值: 一個File類型的對象, 其實就是打開的文件對象 File FS::open(const char* path, const char* mode){} 我們可以看到 SPIFFS.open其實是繼承自 FS類的 File file = SPIFFS.open('/test.txt', FILE_WRITE); 注意: File重載了 Boolean運算符, 如果文件打開了 file就為true if(!file){ Serial.println('There was an error opening the file for writing'); return;} 關(guān)于File類型的函數(shù)放在下一節(jié) 3. SPIFFS.format() //文件系統(tǒng)格式化 SPIFFS.format(); 4. SPIFFS.exists('/test.txt') //判斷有沒有某個文件 SPIFFS.exists('/test.txt'); 5. SPIFFS.remove('/test.txt'); //刪除某個文件 SPIFFS.exists('/test.txt') 6. SPIFFS.rename('原文件名','新文件名'); //文件重命名 7. SPIFFS.end(); //結(jié)束文件系統(tǒng)掛載 三. File類相關(guān)函數(shù) 1. file.name(); //讀取文件的名字 返回文件的名字, char *字符串 2. file.print(''); //往文件中寫入內(nèi)容 參數(shù): 要寫入的字符串 返回值: 寫入的char的個 size_t Print::print(const char *) 我們可以看到 File的print 是繼承并擴展了 Print類 f(file.print('TEST')) { Serial.println('File was written');}else { Serial.println('File write failed');} 3. file.println(''); //往文件中寫入一行內(nèi)容 這個方法有好多個重載, 輸入內(nèi)容的方式比較豐富,可用看一下源碼了解一下 file.println('xiongba,haha'); 4. file.printf(); //寫入內(nèi)容 file.printf('tizhong:%dKG',90); 5. file.find('!'); //在文件中尋找某個char或字符串 返回布爾值! Serial.print('尋找!位置'); Serial.println(file.find('!')); 4. file.findUntil('haha','!'); //在文件中尋找某個char或字符串(遇到某字符串就停止) 返回布爾值! file.findUntil('haha','!'); 5. file.close(); //關(guān)閉文件 6. file.size(); //文件大小 讀模式下能返回文件大小,寫模式下返回 -負值文件大小 7. file.readString(); //讀取字符串, 返回讀取字符串 8. file.readStringUntil(); //讀取字符串, 遇到終止符終止, 返回讀取字符串 9. file.readBytes(); //讀取數(shù)據(jù)到buf中, char *buf; file.readBytes(buf,15); 10. file.readBytesUntil('1',buf,15); //讀取數(shù)據(jù)到buf中, 遇到終止符終止 uint8_t *buf; file.readBytesUntil(0x18,buf,15); char *buf; file.readBytesUntil('!',buf,15); 三. 簡單測試 #include Serial.begin(115200); delay(3000); Serial.println('opening SPIFFS'); while (!SPIFFS.begin()) { Serial.print('...'); } Serial.println('SPIFFS OK!'); File file = SPIFFS.open('/test.txt', FILE_WRITE); if (!file) { Serial.println('open file failed'); } Serial.println(file.print('hello,xiongba!')); file.println('xiongba,haha'); Serial.println(file.print('hello,xiongba!')); file.printf('tizhong:%dKG',90); file.close(); file = SPIFFS.open('/test.txt', FILE_READ); Serial.print('可用file.available():'); Serial.println(file.available()); Serial.print('test.txt的大小:'); Serial.println(file.size()); Serial.print('讀取文件'); String data = file.readString(); Serial.println(data); Serial.print('尋找字符串'); Serial.println(file.find('!')); file.findUntil('haha','!'); Serial.println(file.name()); file.close(); Serial.printf('SPIFFS的總體積: %d 字節(jié)rn', SPIFFS.totalBytes()); Serial.printf('SPIFFS的已用體積: %d 字節(jié)rn', SPIFFS.usedBytes()); Serial.print('現(xiàn)在存在/test.txt嗎:'); Serial.println(SPIFFS.exists('/test.txt')); Serial.println('現(xiàn)在把/test.txt改名為/test2.txt'); SPIFFS.rename('/test.txt', '/test2.txt'); Serial.print('現(xiàn)在存在/test.txt嗎:'); Serial.println(SPIFFS.exists('/test.txt')); Serial.print('現(xiàn)在存在/test2.txt嗎:'); Serial.println(SPIFFS.exists('/test2.txt')); Serial.println('刪除/test2.txt'); SPIFFS.remove('/test2.txt'); Serial.print('現(xiàn)在還存在/test2.txt嗎:'); Serial.println(SPIFFS.exists('/test2.txt')); SPIFFS.end();}void loop(){} 四. 測試FILE_WRITE和FILE_APPEND的區(qū)別(答案顯而易見) 先說結(jié)論: FILE_WRITE是把文件重寫, FILE_APPEND是從源文件的基礎(chǔ)上增量 1.FILE_WRITE #include Serial.begin(115200); delay(3000); Serial.println('opening SPIFFS'); while (!SPIFFS.begin()) { Serial.print('...'); } Serial.println('SPIFFS OK!'); File file = SPIFFS.open('/test.txt', FILE_WRITE); if (!file) { Serial.println('open file failed'); } Serial.println(file.print('hello,xiongba!')); file.println('xiongba,haha'); Serial.println(file.print('hello,xiongba!')); file.printf('tizhong:%dKG',90); file.close(); file = SPIFFS.open('/test.txt', FILE_READ); Serial.print('可用file.available():'); Serial.println(file.available()); Serial.print('test.txt的大小:'); Serial.println(file.size()); Serial.print('讀取文件'); String data = file.readString(); Serial.println(data); Serial.print('尋找字符串'); Serial.println(file.find('!')); file.findUntil('haha','!'); Serial.println(file.name()); file.close(); Serial.printf('SPIFFS的總體積: %d 字節(jié)rn', SPIFFS.totalBytes()); Serial.printf('SPIFFS的已用體積: %d 字節(jié)rn', SPIFFS.usedBytes()); SPIFFS.end();}void loop(){}2. FILE_APPEND模式
File file = SPIFFS.open('/test.txt', FILE_APPEND);
上一篇:玩轉(zhuǎn) ESP32 + Arduino (二十二) SIM800L上傳數(shù)據(jù)到阿里IOT(溫濕度和LBS)(NTP對時)
下一篇:玩轉(zhuǎn) ESP32 + Arduino (二十) SIM800L上傳數(shù)據(jù)到OneNet(新版Mqtts)
推薦閱讀最新更新時間:2025-06-29 10:21




設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- AD5347 并行接口、八路電壓輸出、10 位 DAC 的典型應(yīng)用
- LTM4650AIY-1 4.5 至 16Vin、1.5V 和 1.2V、25A 輸出降壓穩(wěn)壓器的典型應(yīng)用電路
- L78L09AC可調(diào)輸出穩(wěn)壓器的典型應(yīng)用
- TDA7265 單電源典型應(yīng)用電路,帶靜音/待機的 25 +25W 立體聲放大器
- LTC2601IDD-1 16 位軌至軌 DAC 在 10 引腳 DFN 中的典型應(yīng)用
- 使用 ON Semiconductor 的 LV4985VH 的參考設(shè)計
- AM1G-0503DZ ±3.3V 1 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- DER-856 - 45 W USB PD 3.0,采用 3.3 V-21 V PPS(3.3 V-11 V 的 APDO 5 A)電源,使用 InnoSwitch3-Pro PowiGaN 和 VIA Labs VP302 控制器
- 具有低 IQ 模式的 A8585 寬輸入電壓、2A 降壓穩(wěn)壓器系列的典型應(yīng)用
- 全硅穩(wěn)壓器的典型應(yīng)用
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩(wěn)健發(fā)展
- 英飛凌推出具有超低導通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車和工業(yè)功率電子應(yīng)用
- DigiKey 慶祝 B 站賬號粉絲突破 10 萬,贈送驚喜禮包
- 碳化硅企業(yè) Wolfspeed 啟動破產(chǎn)重組,預(yù)計 2025 年三季度末完成司法重整
- 蘋果被曝考慮放棄自研模型 轉(zhuǎn)而與Anthropic或OpenAI合作
- ?百度文心4.5來襲!英特爾Day0即支持端側(cè)部署
- 【廣瀨電機】關(guān)于中國發(fā)明專利侵權(quán)訴訟達成和解的公告
- 英飛凌BMS解決方案推動電動汽車創(chuàng)新
- 地平線的L3判斷與實踐路徑
- 汽車網(wǎng)絡(luò)升級攻略:CAN-CAN FD-車載以太網(wǎng)