#include <SDFS.h>
SDFSConfig SdFsconfig;
File myFile;
bool validSdCard;
const char bakfolder[]="/BACKUP";
void printDirectory(String path, int numTabs = 0) {
// Serial.println(path);
Dir dir = SDFS.openDir(path);
while (dir.next()) {
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print(" ");
}
Serial.print(dir.fileName());
if (dir.isDirectory()) {
Serial.println("/");
printDirectory(path + "/" + dir.fileName(), numTabs + 1);
}
else {
Serial.print(" ");
Serial.println(dir.fileSize());
}
}
} // printDirectory()
/*
void deleteDirectory(String path) {
Serial.println("Borrando directorio: " + path);
Dir dir = SDFS.openDir(path);
while (dir.next()) {
if (dir.isDirectory()) {
deleteDirectory(path + "/" + dir.fileName());
}
else {
SDFS.remove(path + "/" + dir.fileName());
}
}
if(path != "/") SDFS.rmdir(path);
} // deleteDirectory()
void clean_junk_files() {
String path = "/";
Dir dir = SDFS.openDir(path);
while (dir.next()) {
if (dir.isDirectory()) {
if(dir.fileName() != "BACKUP") {
Serial.println("A borrar: " + path + "/" + dir.fileName());
deleteDirectory(path + "/" + dir.fileName());
}
}
else {
if(dir.fileName().indexOf(".gpx") == 0 || dir.fileName().indexOf(".conf") == 0) {
SDFS.remove(path + "/" + dir.fileName());
}
}
}
if(path != "/") SDFS.rmdir(path);
} // deleteDirectory()
*/
// ----------------------------------------------------------------------------
// Limpia archivos y carpetas recursivamente
// ----------------------------------------------------------------------------
void delete_folders(String path) {
Dir dir = SDFS.openDir(path);
while (dir.next()) {
String fileName = path + "/" + dir.fileName();
if (dir.isDirectory()) {
Serial.println("Carpeta a borrar*: " + fileName);
delete_folders(fileName);
}
else {
Serial.println("Archivo a borrar*: " + fileName);
SDFS.remove(fileName);
}
}
if (path != "/") {
Serial.println("Carpeta a borrar**: " + path);
if (SDFS.exists(path)) {
Serial.println("Borrando**: " + path);
SDFS.rmdir(path);
}
}
} // delete_folders()
// ----------------------------------------------------------------------------
// Limpia archivos y carpetas no deseados
// ----------------------------------------------------------------------------
void clean_junk_files() {
String path = "/";
Dir dir = SDFS.openDir(path);
while (dir.next()) {
String fileName = path + dir.fileName();
if (dir.isDirectory()) {
if (fileName != bakfolder) {
Serial.println("Carpeta a borrar: " + fileName);
delete_folders(fileName);
}
}
else {
if (fileName.indexOf(".gpx") == -1) {
if (fileName.indexOf(".conf") == -1) {
Serial.println("Archivo a borrar: " + fileName);
SDFS.remove(fileName);
}
}
}
}
} // clean_junk_files()
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
delay(100);
Serial.println("Hello, Raspberry Pi Pico!");
SdFsconfig.setCSPin(17);
SDFS.setConfig(SdFsconfig);
// SDFS.setTimeCallback(timestamp_callback);
validSdCard = SDFS.begin();
delay(250);
Serial.printf("SD Valida: %s\r\n", validSdCard ? "SI" : "NO");
Serial.println("Creando directorios y subdirectorios...");
// printDirectory("/");
SDFS.mkdir("/BACKUP");
SDFS.mkdir("/pp");
SDFS.mkdir("/pp/pp1");
SDFS.mkdir("/pp/pp1/pp2");
SDFS.mkdir("/pp/pp1/pp3");
SDFS.mkdir("/pp/pp1/pp2/pp21");
SDFS.mkdir("/pp/pp1/pp3/pp31");
SDFS.mkdir("/pp/pp1/pp3/pp32");
Serial.println("Creando algunos archivos...");
myFile = SDFS.open("/current.gpx", "a");
myFile.println("Hola Manola");
myFile.close();
myFile = SDFS.open("/tracker.conf", "a");
myFile.close();
myFile = SDFS.open("/nada.txt", "a");
myFile.println("Nada");
myFile.close();
myFile = SDFS.open("/BACKUP/260313_185600.gpx", "a");
myFile.close();
myFile = SDFS.open("/pp/pp0.txt", "a");
myFile.println("Hola Pepe");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp1.txt", "a");
myFile.println("Hola Joaquina");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp2/pp2.txt", "a");
myFile.println("Hola Joaquina");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp2/pp21/pp210.txt", "a");
myFile.println("Hola Joaquina");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp2/pp21/pp211.txt", "a");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp3/pp3.txt", "a");
myFile.println("Hola Joaqui");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp3/pp31/pp310.txt", "a");
myFile.println("Hola Manola");
myFile.close();
myFile = SDFS.open("/pp/pp1/pp3/pp32/pp320.txt", "a");
myFile.close();
Serial.println("----------------------------------");
printDirectory("/");
Serial.println("----------------------------------");
// deleteDirectory("/pp");
clean_junk_files();
Serial.println("----------------------------------");
printDirectory("/");
Serial.println("----------------------------------");
}
void loop() {
// put your main code here, to run repeatedly:
delay(1); // this speeds up the simulation
}