For a hobby project to play audio files, I was planning Counting Files on SD card. A bit of browsing internet and we were not able to find something desirable in top searches. To overcome the situation, it was decided to add a bit of additional variable “int fileCountOnSD = 0; in Arduino’s SD card library example “List files” to count files are it print files. You can remove the serial print commands, if only wish to count files.
This post assumes, that you have already setup sdcard module with arduino, to recap
- STEP 1: Attach SD card module with arduino and connect pins to the pins mentioned in start of code under heading “The circuit:”
- STEP 2: copy the code below in new file OR download and open code.ino in arduino ide
- STEP 3: Upload the code to your arduino and open serial monitor by clicking this icon

you will see FileCountonSD before “Done’ message

All this update does is add +1 when it serial prints files name fileCountOnSD++;
where ++ is just a fancy /short way of writing
fileCountOnSD = fileCountOnSD + 1;
Here is the updated code. or download Arduino file
/*
Listfiles
This example shows how print out the files in a
directory on a SD card
The circuit:
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)
created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
modified 2 Feb 2014
by Scott Fitzgerald
This example code is in the public domain.
File count part added by : Arif Saeed www.inoace.com
*/
#include <SPI.h>
#include <SD.h>
File root;
int fileCountOnSD = 0; // for counting files
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
root = SD.open("/");
printDirectory(root, 0);
// Now print the total files count
Serial.println(F("fileCountOnSD: "));
Serial.println(fileCountOnSD);
Serial.println("done!");
} // end setup
void loop() {
// nothing happens after setup finishes.
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
// for each file count it
fileCountOnSD++;
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs + 1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
}