mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-11-03 15:41:47 +01:00 
			
		
		
		
	* FS::name() returns the item name as in Arduino SD Added method FS::path() that returns the full path * Adjust examples
		
			
				
	
	
		
			178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "FS.h"
 | 
						|
#include "FFat.h"
 | 
						|
#include <time.h> 
 | 
						|
#include <WiFi.h>
 | 
						|
 | 
						|
const char* ssid     = "your-ssid";
 | 
						|
const char* password = "your-password";
 | 
						|
 | 
						|
long timezone = 1; 
 | 
						|
byte daysavetime = 1;
 | 
						|
 | 
						|
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
 | 
						|
    Serial.printf("Listing directory: %s\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.print (file.name());
 | 
						|
            time_t t= file.getLastWrite();
 | 
						|
            struct tm * tmstruct = localtime(&t);
 | 
						|
            Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec);
 | 
						|
            if(levels){
 | 
						|
                listDir(fs, file.path(), levels -1);
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            Serial.print("  FILE: ");
 | 
						|
            Serial.print(file.name());
 | 
						|
            Serial.print("  SIZE: ");
 | 
						|
            Serial.print(file.size());
 | 
						|
            time_t t= file.getLastWrite();
 | 
						|
            struct tm * tmstruct = localtime(&t);
 | 
						|
            Serial.printf("  LAST WRITE: %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct->tm_year)+1900,( tmstruct->tm_mon)+1, tmstruct->tm_mday,tmstruct->tm_hour , tmstruct->tm_min, tmstruct->tm_sec);
 | 
						|
        }
 | 
						|
        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\n", path);
 | 
						|
 | 
						|
    File file = fs.open(path);
 | 
						|
    if(!file){
 | 
						|
        Serial.println("Failed to open file for reading");
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    Serial.print("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\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\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\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\n", path);
 | 
						|
    if(fs.remove(path)){
 | 
						|
        Serial.println("File deleted");
 | 
						|
    } else {
 | 
						|
        Serial.println("Delete failed");
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
void setup(){
 | 
						|
    Serial.begin(115200);
 | 
						|
    // We start by connecting to a WiFi network
 | 
						|
    Serial.println();
 | 
						|
    Serial.println();
 | 
						|
    Serial.print("Connecting to ");
 | 
						|
    Serial.println(ssid);
 | 
						|
 | 
						|
    WiFi.begin(ssid, password);
 | 
						|
 | 
						|
    while (WiFi.status() != WL_CONNECTED) {
 | 
						|
        delay(500);
 | 
						|
        Serial.print(".");
 | 
						|
    }
 | 
						|
    Serial.println("WiFi connected");
 | 
						|
    Serial.println("IP address: ");
 | 
						|
    Serial.println(WiFi.localIP());
 | 
						|
    Serial.println("Contacting Time Server");
 | 
						|
	configTime(3600*timezone, daysavetime*3600, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org");
 | 
						|
	struct tm tmstruct ;
 | 
						|
    delay(2000);
 | 
						|
    tmstruct.tm_year = 0;
 | 
						|
    getLocalTime(&tmstruct, 5000);
 | 
						|
	Serial.printf("\nNow is : %d-%02d-%02d %02d:%02d:%02d\n",(tmstruct.tm_year)+1900,( tmstruct.tm_mon)+1, tmstruct.tm_mday,tmstruct.tm_hour , tmstruct.tm_min, tmstruct.tm_sec);
 | 
						|
    Serial.println("");
 | 
						|
    
 | 
						|
    if(!FFat.begin(true)){
 | 
						|
        Serial.println("FFat Mount Failed");
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    listDir(FFat, "/", 0);
 | 
						|
    removeDir(FFat, "/mydir");
 | 
						|
    createDir(FFat, "/mydir");
 | 
						|
    deleteFile(FFat, "/hello.txt");
 | 
						|
    writeFile(FFat, "/hello.txt", "Hello ");
 | 
						|
    appendFile(FFat, "/hello.txt", "World!\n");
 | 
						|
	listDir(FFat, "/", 0);
 | 
						|
}
 | 
						|
 | 
						|
void loop(){
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 |