Предыстория...
Решил я тут попробовать поработать с файлами на карте SD посредством библиотек и среды разработки Arduino. Для начала просто хотел посчитать количество папок и файлов на карте SD, потом уже посчитать количество файлов с разными расширениями.
И тут мне вес поломала скрытая папка "System Volume Information"!!! Дело в том, что она включается в количество папок, а находящийся внутри файлы - в общее число подсчитываемых файлов.
Теперь вопрос. Как пропустить эту папку из подсчета. Да и вообще в дальнейшем игнорировать ее на карте памяти? Я долго мучал поисковик, но, похоже, неправильно задаю ему вопрос. В общем решения пока не нашел.
В общем виде, согласно примерам из библиотеки SD, подсчет файлов и папок выглядит так:
Спойлер
Код:
void scanSD(File dir) {
while (true) {
File entry = dir.openNextFile();
if (!entry) {
// no more files
break;
}
if (entry.isDirectory()) {
dirCnt++; // считаем количество папок
scanSD(entry);
}
} else {
fileCnt++; // считаем количество файлов
}
entry.close();
}
}
Если подсчитывать, к примеру, файлы с расширением *.txt, то код выглядит так
Спойлер
Код:
void scanSD(File dir) {
while (true) {
File entry = dir.openNextFile();
if (!entry) {
// no more files
break;
}
if (entry.isDirectory()) {
dirCnt++; // считаем количество папок
scanSD(entry);
}
} else {
fileName = entry.name();
if (fileName.indexOf(".txt")) {
fileCnt++; // считаем количество файлов с расширением
}
}
entry.close();
}
}
Причем файлы внутри папки System Volume Information не имеют расширения, но при запуске последнего куска кода все равно включаются в подсчет числа файлов.