Caricare una riga alla volta da un txt YUN

ho questo codice (su YUN), che carica il contenuto di un txt composto da 6 righe

  String path="/mnt/sd/Arduino/www/Innaffiaduino/txt/prog_" + valorezon + i +".txt";
  File dataFiles = FileSystem.open(path.c_str());
  valorezona="";
  while (dataFiles.available()) {
        valorezona=valorezona + (char)dataFiles.read();
        Console.println("ciclo");
                                  }

come posso modificarlo per caricare una riga alla volta o capire quando sono a fine riga?

Non lo so, magari c’è un metodo di classe “File” che si chiama readln(), indaga sulla classe “File” li c’è la soluzione.

Ciao.

Non mi pare che la classe File, che poi si aggancia a Stream, abbia molti metodi per leggere i file.
L'unica è mettere un if che ti legge finché non trovi un particolare carattere.
File.read() legge infatti un byte alla volta, prima di salvarlo nella stringa controlla che non sia un carattere usato per andare a capo (\n oppure \r), nel qual caso fermi la lettura.

quindi diciamo che all’interno metto un if con la verifica che caratteredacontrollare=="\n" or “\r”

però prima l’assegnazione al carattere da controllare non la faccio così:

caratteredacontrollare=(char)dataFiles.read();

ma

caratteredacontrollare=dataFiles.read();

giusto?

Assegnalo ad una variabile char temporanea. Poi fai la verifica, e solo se non è uno di quei 2 caratteri, aggiungi il dato letto alla tua stringa.

Non mi pare che la classe File, che poi si aggancia a Stream, abbia molti metodi per leggere i file.
L'unica è mettere un if che ti legge finché non trovi un particolare carattere.
File.read() legge infatti un byte alla volta, prima di salvarlo nella stringa controlla che non sia un carattere usato per andare a capo (\n oppure \r), nel qual caso fermi la lettura.

Nooooooo, non mi dire.
Vabbe eredita la classe File e gli aggiungi il metodo readLine(const char sep='\n'), ma se non devi farne un uso continuato fa come dice leo.

Ciao.

MauroTec:
Nooooooo, non mi dire.

:sweat_smile: