【发布时间】:2021-01-07 23:55:34
【问题描述】:
我正在处理一个使用 Flash 数据保存的项目。我正在为 ESP32 使用 SPIFFS 库,我目前正在尝试将每一行的数据存储到一个字符串中。由于我可以控制文件中可以包含多少内容,因此存储数据不需要超过 3 个字符串。我可以使用readStringUntil 轻松存储第一行内容。但我无法从第 2 行和第 3 行获取内容。
对于第一行,我使用以下代码:
//Pegar a primeira linha do arquivo, onde será armazenado o nome do WIFI (ssid)
void first_line (){
file = SPIFFS.open("/wifi.txt", "r");
while (file.available()) {
String first_line = file.readStringUntil('\n');
Serial.print(first_line);
break;
}
file.close();
}
我正在使用这个函数将代码写入文件:
// Escrever mensagem dentro do arquivo
void write_file_info(String message) {
file = SPIFFS.open("/wifi.txt", FILE_WRITE);
if (!file){
Serial.println("Error opening file");
return;
}else{
Serial.println("Success opening file");
}
if (file.println(message)){
Serial.println("File was written");
}else{
Serial.println("File was not written");
}
file.close();
}
我正在使用 Append 添加第二行和第三行:
void append_file_info (String message){
file = SPIFFS.open("/wifi.txt", FILE_APPEND);
if (!file){
Serial.println("Erro ao realizar APPEND ao arquivo");
}
if (file.println(message)){
Serial.println("File was added");
}else{
Serial.println("File was not added");
}
file.close();
}
这是当前输出,文件大小仅供管理,“文件内内容”仅供参考:
File size: 37
Content inside file:
first line
second line
thrid line
这就是我阅读文件的方式:
void read_file_info() {
file = SPIFFS.open("/wifi.txt");
Serial.print("\nFile size: ");
Serial.println(file.size());
Serial.print("Content inside file: \n");
while (file.available()){
Serial.write(file.read());
}
Serial.println("\n");
file.close();
delay(3000);
}
我想尝试在“\n”之后读取数据,但找不到任何关于在某些字符串之后读取的文档。
我尝试创建一个缓冲区并稍后将其拆分,缓冲区的输出是正确的,但我无法将其正确拆分为字符串:
void second_line (){
file = SPIFFS.open("/wifi.txt", "r");
char buffer[64];
while (file.available()) {
int l = file.readBytesUntil('\n', buffer, sizeof(buffer));
buffer[l] = 0;
Serial.println(buffer);
}
file.close();
}
【问题讨论】:
标签: c++ arduino esp32 arduino-c++