reading data from spiffs data line by line...how??

hello beautiful people!
i was trying to sace data as *.txt using spiffs and i want to read data line by line....but i just cant..here i am posting the function i created, which does this job......if you want me to upload whole code: "BEHOLD! that's too long"....anyways
i get data as

rsmook
edtfcgvhb
dsmook
idtfcgvhb
gsmook
 dtfcgvhb
1smook

5smook
8dtfcgvhb
0smook
6dtfcgvhb
2smook
.dtfcgvhb
9smook

dtfcgvhb
-smook
1dtfcgvhb
7smook
.dtfcgvhb
0smook

dtfcgvhb
1smook
0dtfcgvhb
 smook

dtfcgvhb

smook
 dtfcgvhb
 smook

dtfcgvhb
 smook

dtfcgvhb

smook
rdtfcgvhb
asmook
ddtfcgvhb
nsmook
gdtfcgvhb
:smook
1dtfcgvhb

smook
5dtfcgvhb
4smook
0dtfcgvhb
7smook
2dtfcgvhb
1smook
8 smook
-dtfcgvhb
2smook
7dtfcgvhb
0smook
0 smook
9dtfcgvhb
 smook

dtfcgvhb

smook
 dtfcgvhb
 smook

dtfcgvhb
 smook

dtfcgvhb

smook
⸮dtfcgvhb

a number of characters are missing,for i saved the data as

reading :1
5840672.00
 -127.00
 100 
0
 0 
0
void data_reader(){
  if(read_data){
     myDataFile = SPIFFS.open(filename, "r");              // Open the file again, this time for reading
    if (!myDataFile) Serial.println("file open failed");  // Check for errors
//    Serial.println(myDataFile.read());
//    Serial.println("....................."); 
    delay(5000);   
    while (myDataFile.available()) {
      //  Serial.write(myDataFile.read());                    // Read all the data from the file and display it
//        Serial.println("1111111111111111111"); 
            Serial.println("smook");
            while(myDataFile.read()!='\n'){
//          myDataFile.read()!='\n';
                Serial.write(myDataFile.read());
                delay(500);
//                if(myDataFile.read()!='\n') Serial.println("dtfcgvhb");break;
            }
    }
    
//    String k=

    myDataFile.close();                                   // Close the file
    delay(10000); 
  }
  !read_data;
  SPIFFS.remove(filename);//delete the file now
}
char buffer[64];
while (file.available()) {
 int l = file.readBytesUntil('\n', buffer, sizeof(buffer));
 buffer[l] = 0;
 Serial.println(buffer);
}

https://www.arduino.cc/reference/en/language/functions/communication/stream/streamreadbytesuntil/

thanks man .....i will just try it

The SPIFFS.open() method gives you an object of the FILE class. FILE inherits from the Stream class. Thus, you can use all the methods you're accustomed to from the Stream class (similar to Serial which is an object whose class also inherits from Stream).

The real advantage to hobbyist of the Open Source philosophy is that all the source code is available to examine. You should start opening up the relevant .h and .cpp file and have a look for yourself. Not only might you be able to figure out the answers on your own, you will definitely learn something.

thanks gfvalvo....i was about to post question about this ...but since you said so.....
you know what ...when i open arduino libraries...they scare me away...
i just cant understand its functions easily and give me hard time...
could the reason be that my c++ isnt upto level...
thanks

Suggestions:

  • Keep reading example code. When you get to a construct that you don't understand, Google it. There are so many forums and guides online that someone has no doubt already asked the same question and gotten an answer.

  • Read up on Object Orient Programming in general. Again, the internet is replete with resources.

  • Brush up on your C programming skills. You can't do C++ if you can't do C.

Those are the steps I took to progress from an Old-Guy C programmer to an intermediate level (at best) C++ programmer. The journey continues…..

thanks man

Does no one in the forum have an answer to this perfectly valid question. Finding out how to program the SDK can be tortuous at times and resorting to reading the code seems primitive to me - not to mention it is a skill not posessed by most amateurs and a lot of professionals. I was taught to document code to make life easier for those that follow. I personally spend huge amounts of time determining how the ESPWebServer funcions work (due to lack of documenation). I personally want to get on an construct things not spend most of my time determining what my raw materials are.

nhatchett:
Does no one in the forum have an answer to this perfectly valid question. Finding out how to program the SDK can be tortuous at times and resorting to reading the code seems primitive to me - not to mention it is a skill not posessed by most amateurs and a lot of professionals. I was taught to document code to make life easier for those that follow. I personally spend huge amounts of time determining how the ESPWebServer funcions work (due to lack of documenation). I personally want to get on an construct things not spend most of my time determining what my raw materials are.

What have you tried?

Isn't my code snippet and the link to reference a good answer?

Juraj:

char buffer[64];

while (file.available()) {
int l = file.readBytesUntil('\n', buffer, sizeof(buffer));
buffer[l] = 0;
Serial.println(buffer);
}




https://www.arduino.cc/reference/en/language/functions/communication/stream/streamreadbytesuntil/

Are you sure this works, and that you don't have to use sizeof(buffer)-1?

Without the -1 I'm getting
Stack smashing protect failure!
abort() was called at PC 0x400e180c on core 1

It works up until...

 buffer[l] = 0;

So yes, sizeof(buffer)-1 would be better and leave space for the terminator.

And on a side note, who the heck uses l as a variable name?

marcmerlin:
Are you sure this works, and that you don’t have to use sizeof(buffer)-1?

Without the -1 I’m getting
Stack smashing protect failure!
abort() was called at PC 0x400e180c on core 1

yes, there should be the -1

pcbbc:
And on a side note, who the heck uses l as a variable name?

l as length

nhatchett:
Does no one in the forum have an answer to this perfectly valid question. Finding out how to program the SDK can be tortuous at times and resorting to reading the code seems primitive to me

Well written code is readable code. It makes no sense to only be able to write code - come back to something
you wrote a few years back and you'll have to read it!

  • not to mention it is a skill not posessed by most amateurs and a lot of professionals.

Professionals do code reviews, which is all about reading code and improving it (and making
sure its appropriately documented). If code is unreadable, its hard to improve, change or fix.

One thing I see all the time with beginners is unnecessary documentation
of the form:

  count += step ;  // increment count

Which will often lead to the situation where comments and code no longer correspond:

  const int led_pin = 8 ;  // LED on pin 10

The point is well written code needs little in-line documentation - well chosen names and small
functions do most of the work for you.

There are several types of documentation -
there are in-line docs about the code and how it works
there's also API documentation, often auto-generated from tagged comments
there's high-level documentation about what the software does.
there's examples of use.

Its a chore to have to generate several types of docs as you go, which is why documentation is often
lacking (especially if you're not being paid to document :). When the code is easy to read this lack of
documentation isn't such an issue.