Как я могу перечислить только файлы, начинающиеся с "/LOG?"
Попытка получить список корневого каталога LittleFS; но только файлы, начинающиеся с «/LOG».
String str;
if (!LittleFS.begin())
{
Serial.println("LittleFS failed to mount !");
}
Dir dir = LittleFS.openDir("/");
while (dir.next())
{
if(strncmp(dir.fileName().c_str(), "/LOG", 4) == 0)
{
str += "<a href=\"";
str += dir.fileName();
str += "\">";
str += dir.fileName();
str += "</a>";
str += " ";
str += dir.fileSize();
str += "<br>\r\n";
}
}
client.print(str);
Если я закомментирую "if(strncmp(dir.fileName().c_str(), "/LOG", 4) == 0)" и соответствующие фигурные скобки; список всех файлов. Код с "if(strncmp(dir.fileName().c_str(), "/LOG", 4) == 0)" файлов нет в списке.
Как вывести список только тех файлов, которые начинаются с "/LOG?"
Уильям
@William, 👍0
Обсуждение1 ответ
Лучший ответ:
Дать имя файла String в текст...
String text = "/LOGsdfsdf";
if(text.startsWith("/LOG")){
//маленький файл начинается с /LOG
}else{
// обрабатывает неверный файл.
}
Посмотрите здесь
https://www.arduino.cc/reference/en/language/ переменные/типы данных/строковый объект/
URL-адрес метода startsWith("");
https://www.arduino.cc/reference/en /language/variables/data-types/string/functions/startswith
FileZilla показывает имя файла как «LOG0608.TXT». Соглашение об именах: «LOG + месяц + дата + '.TXT'». Я мог бы перенести "/" с веб-сервера., @William
Требуется "dir.fileName()" для сравнения фактического имени файла с LOG0608.TXT. Я хочу, чтобы отображались только файлы, начинающиеся с «LOG»., @William
Dose dir.fileName() дает строку в виде "LOGXXXX.TXT" или "/LOGXXXX.TXT", @Avon97
Используется: String file_name = dir.fileName(); если (имя_файла.startsWith("ЖУРНАЛ")) { Спасибо!, @William
gr8 рад, что могу вам помочь, @Avon97
- Esp8266 Vin контакт
- Отправка данных из ESP8266 в PHP
- ОТА-программа SPIFFS на ESP8266
- Порт Arduino OTA не обновляется в Arduino IDE
- Скетч мигания ESP8266 не мигает светодиодом
- Как программно получить ответ на выданную AT-команду для ES266 на Arduino?
- Как отправить пакет данных UDP между двумя точками доступа?
- HTML-страница переменной ESP8266 Webserver ESP8266WebServer (не как один постоянный символ)
И вы уверены, что имена файлов *do* начинаются именно с символов
/LOG
?, @MajenkoПросто проверка здравомыслия здесь. Но разве
/
не используется в качестве разделителя пути? В моем мире/
недопустимый символ для имен файлов или каталогов. В этом случае имена файлов в каталоге/
не должны содержать/
., @Kwasmich@Kwasmich Если результат dir.fileName() не является полным абсолютным путем к файлу. Вот почему я спрашивал, действительно ли имена файлов начинаются с
/LOG
, @Majenko@Маженко правда. Просто чтобы ничего не упустить из виду.
strncmp
чувствителен к регистру!, @Kwasmich@Kwasmich Действительно. Не проблема, если он использует имена файлов 8.3, но может быть проблемой, если FS использует LFN., @Majenko
у вас есть объект String, возвращаемый
fileName
, и вы берете из него c-строку, чтобы использовать ее в strcmp? Строка имеетstartsWith
. И я думаю, что перечисленные файлы не начинаются с /., @Juraj