// Enumerate and possibly display the animated GIF filenames in GIFS directory int enumerateGIFFiles(const char *directoryName, boolean displayFilenames) { numberOfFiles = 0; File directory = SD.open(directoryName); if (!directory) { return -1; } File file = directory.openNextFile(); while (file) { if (isAnimationFile(file.name())) { numberOfFiles++; if (displayFilenames) { Serial.println(file.name()); } } file.close(); file = directory.openNextFile(); } file.close(); directory.close(); return numberOfFiles; }
// Get the full path/filename of the GIF file with specified index void getGIFFilenameByIndex(const char *directoryName, int index, char *pnBuffer) { char fname[30]; // Make sure index is in range if ((index < 0) || (index >= numberOfFiles)) return; File directory = sd.open(directoryName); if (!directory) return; File file = directory.openNextFile(); while (file && (index >= 0)) { file.getName(fname, sizeof(fname)); if (isAnimationFile(fname)) { index--; // Copy the directory name into the pathname buffer strcpy(pnBuffer, directoryName); // Append the filename to the pathname strcat(pnBuffer, fname); } file.close(); file = directory.openNextFile(); } file.close(); directory.close(); }
// Get the full path/filename of the GIF file with specified index void getGIFFilenameByIndex(const char *directoryName, int index, char *pnBuffer) { char* filename; // Make sure index is in range if ((index < 0) || (index >= numberOfFiles)) return; File directory = SD.open(directoryName); if (!directory) return; File file = directory.openNextFile(); while (file && (index >= 0)) { filename = (char*)file.name(); if (isAnimationFile(file.name())) { index--; #if !defined(ESP32) // Copy the directory name into the pathname buffer - ESP32 SD Library includes the full path name in the filename, so no need to add the directory name strcpy(pnBuffer, directoryName); // Append the filename to the pathname strcat(pnBuffer, filename); #else strcpy(pnBuffer, filename); #endif } file.close(); file = directory.openNextFile(); } file.close(); directory.close(); }