Salve a tutti
sto sbattendo da giorni su questa cosa che dovrebbe essere una stupidaggine.
nextSingleLine() (che non ho postato perché lungo e con dipendenze esterne) legge da un file di testo e restituisce un byte[] che contiene una singola riga, oppure restituisce null se la riga comincia con alcuni caratteri speciali (";", ">").
Il metodo nextLine() dovrebbe semplicemente restituire un "paragrafo" ossia un blocco contiguo di righe valide (quindi itero fino alla prossima riga non valida, ossia che comincia con caratteri speciali).
Così dovrei appendere in byte[] read le righe valide che trovo, fino alla prossima non valida, e restituire l'array read.
read.length è corretto, ma new String(read) non stampa nulla!
public byte[] nextLine(){
byte[] line = new byte[1];
byte[] read = new byte[1];
int i=0;
int len;
line = this.nextSingleLine();
if(line==null) return null;
while(line != null && line.length>2)
{
System.out.println("line:"+new String(line));
System.out.println("line len:"+line.length);
read=this.concat(line,read);
System.out.println("READ:"+new String(read));
System.out.println("READ len:"+read.length);
line = this.nextSingleLine();
}
return read;
}
public byte[] concat(byte[] a,byte[] b){
byte[] c = new byte[a.length + b.length];
System.out.println("a:"+a.length+" b:"+b.length+" concat"+c.length);
System.arraycopy(a, 0, c, 0, a.length);
System.arraycopy(b, 0, c, a.length, b.length);
return c;
}