| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | #include <Arduino.h>#include "FS.h"#include <LITTLEFS.h>/* You only need to format LITTLEFS the first time you run a   test or else use the LITTLEFS plugin to create a partition   https://github.com/lorol/arduino-esp32littlefs-plugin */   #define FORMAT_LITTLEFS_IF_FAILED truevoid listDir(fs::FS &fs, const char * dirname, uint8_t levels){    Serial.printf("Listing directory: %s\r\n", dirname);    File root = fs.open(dirname);    if(!root){        Serial.println("- failed to open directory");        return;    }    if(!root.isDirectory()){        Serial.println(" - not a directory");        return;    }    File file = root.openNextFile();    while(file){        if(file.isDirectory()){            Serial.print("  DIR : ");            Serial.println(file.name());            if(levels){                listDir(fs, file.name(), levels -1);            }        } else {            Serial.print("  FILE: ");            Serial.print(file.name());            Serial.print("\tSIZE: ");            Serial.println(file.size());        }        file = root.openNextFile();    }}void createDir(fs::FS &fs, const char * path){    Serial.printf("Creating Dir: %s\n", path);    if(fs.mkdir(path)){        Serial.println("Dir created");    } else {        Serial.println("mkdir failed");    }}void removeDir(fs::FS &fs, const char * path){    Serial.printf("Removing Dir: %s\n", path);    if(fs.rmdir(path)){        Serial.println("Dir removed");    } else {        Serial.println("rmdir failed");    }}void readFile(fs::FS &fs, const char * path){    Serial.printf("Reading file: %s\r\n", path);    File file = fs.open(path);    if(!file || file.isDirectory()){        Serial.println("- failed to open file for reading");        return;    }    Serial.println("- read from file:");    while(file.available()){        Serial.write(file.read());    }    file.close();}void writeFile(fs::FS &fs, const char * path, const char * message){    Serial.printf("Writing file: %s\r\n", path);    File file = fs.open(path, FILE_WRITE);    if(!file){        Serial.println("- failed to open file for writing");        return;    }    if(file.print(message)){        Serial.println("- file written");    } else {        Serial.println("- write failed");    }    file.close();}void appendFile(fs::FS &fs, const char * path, const char * message){    Serial.printf("Appending to file: %s\r\n", path);    File file = fs.open(path, FILE_APPEND);    if(!file){        Serial.println("- failed to open file for appending");        return;    }    if(file.print(message)){        Serial.println("- message appended");    } else {        Serial.println("- append failed");    }    file.close();}void renameFile(fs::FS &fs, const char * path1, const char * path2){    Serial.printf("Renaming file %s to %s\r\n", path1, path2);    if (fs.rename(path1, path2)) {        Serial.println("- file renamed");    } else {        Serial.println("- rename failed");    }}void deleteFile(fs::FS &fs, const char * path){    Serial.printf("Deleting file: %s\r\n", path);    if(fs.remove(path)){        Serial.println("- file deleted");    } else {        Serial.println("- delete failed");    }}void testFileIO(fs::FS &fs, const char * path){    Serial.printf("Testing file I/O with %s\r\n", path);    static uint8_t buf[512];    size_t len = 0;    File file = fs.open(path, FILE_WRITE);    if(!file){        Serial.println("- failed to open file for writing");        return;    }    size_t i;    Serial.print("- writing" );    uint32_t start = millis();    for(i=0; i<2048; i++){        if ((i & 0x001F) == 0x001F){          Serial.print(".");        }        file.write(buf, 512);    }    Serial.println("");    uint32_t end = millis() - start;    Serial.printf(" - %u bytes written in %u ms\r\n", 2048 * 512, end);    file.close();    file = fs.open(path);    start = millis();    end = start;    i = 0;    if(file && !file.isDirectory()){        len = file.size();        size_t flen = len;        start = millis();        Serial.print("- reading" );        while(len){            size_t toRead = len;            if(toRead > 512){                toRead = 512;            }            file.read(buf, toRead);            if ((i++ & 0x001F) == 0x001F){              Serial.print(".");            }            len -= toRead;        }        Serial.println("");        end = millis() - start;        Serial.printf("- %u bytes read in %u ms\r\n", flen, end);        file.close();    } else {        Serial.println("- failed to open file for reading");    }}void setup(){    Serial.begin(115200);    if(!LITTLEFS.begin(FORMAT_LITTLEFS_IF_FAILED)){        Serial.println("LITTLEFS Mount Failed");        return;    }        listDir(LITTLEFS, "/", 0);	createDir(LITTLEFS, "/mydir");	writeFile(LITTLEFS, "/mydir/hello2.txt", "Hello2");	listDir(LITTLEFS, "/", 1);	deleteFile(LITTLEFS, "/mydir/hello2.txt");	removeDir(LITTLEFS, "/mydir");	listDir(LITTLEFS, "/", 1);    writeFile(LITTLEFS, "/hello.txt", "Hello ");    appendFile(LITTLEFS, "/hello.txt", "World!\r\n");    readFile(LITTLEFS, "/hello.txt");    renameFile(LITTLEFS, "/hello.txt", "/foo.txt");    readFile(LITTLEFS, "/foo.txt");    deleteFile(LITTLEFS, "/foo.txt");    testFileIO(LITTLEFS, "/test.txt");    deleteFile(LITTLEFS, "/test.txt");	    Serial.println( "Test complete" );}void loop(){}
 |