读取某文件下所有的.bmp文件,存到双向链表中并在正点原子显示屏上循环显示
时间: 2024-04-07 09:33:16 浏览: 10
可以使用以下代码来实现读取某文件下所有的.bmp文件,并将其存储到双向链表中,并在正点原子显示屏上循环显示:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <filesystem>
// 定义双向链表节点
struct ListNode {
std::string filename;
ListNode* prev;
ListNode* next;
};
// 双向链表类
class LinkedList {
public:
LinkedList() : head(nullptr), tail(nullptr) {}
~LinkedList() {
ListNode* current = head;
while (current != nullptr) {
ListNode* next = current->next;
delete current;
current = next;
}
}
void addNode(const std::string& filename) {
ListNode* newNode = new ListNode();
newNode->filename = filename;
newNode->prev = nullptr;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
newNode->prev = tail;
tail = newNode;
}
}
ListNode* getHead() const {
return head;
}
private:
ListNode* head;
ListNode* tail;
};
int main() {
std::string folderPath = "/path/to/folder"; // 替换为实际的文件夹路径
LinkedList fileList;
// 遍历文件夹
for (const auto& entry : std::filesystem::directory_iterator(folderPath)) {
if (entry.is_regular_file()) {
std::string filePath = entry.path().string();
std::string extension = entry.path().extension().string();
if (extension == ".bmp") {
fileList.addNode(filePath);
}
}
}
// 在正点原子显示屏上循环显示
while (true) {
ListNode* current = fileList.getHead();
while (current != nullptr) {
std::string filename = current->filename;
// 在正点原子显示屏上显示filename的内容
std::cout << "Displaying: " << filename << std::endl;
current = current->next;
}
}
return 0;
}
```
请将`/path/to/folder`替换为实际的文件夹路径,该代码将遍历指定文件夹下的所有文件,并将扩展名为`.bmp`的文件存储到双向链表中。然后,在循环中,将文件名逐个显示在正点原子显示屏上。你可以根据具体的正点原子显示屏库或接口来实现在屏幕上显示文件名的功能。