我正在做一个用Flash数据保存的项目。我使用的是SPIFFS库的ESP32,我目前正在尝试将每一行的数据存储到字符串中。因为我可以控制文件中的内容数量,所以存储数据的字符串不需要超过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();
}
我用这个函数把代码写进File:
// 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();
}
2条答案
按热度按时间w8f9ii691#
使用vector会更简单:
使用
v[0]
获取第一行,v[1]
获取第二行,v[2]
获取第三行,依此类推。jdg4fx2g2#
我可以让它像这样工作: