Ragazzi ho un file di testo da analizzare formato da 1riga di 100000 caratteri e vorrei usare il BufferedInputStream...ho scritto allora il seguente codice:
codice:
BufferedInputStream is = new BufferedInputStream(new FileInputStream(fn.toString()));
byte[] c = new byte[1024];
int i=0,j=29;
int readChars = 0;
StringBuilder s=new StringBuilder("");
while ((readChars = is.read(c)) != -1)//così arrivo a fine file
{
if(c[i]==c[j])
{
//System.out.println("Dentro l'if c[i]"+c[i]+" "+"c[j]"+c[j]+ " i: "+i+" "+"j:"+j);
s.append((char)c[i]);
for(int h=1;h<29;h++)
{
i++;
j--;
// System.out.println("Dentro il for c[i]"+c[i]+" "+"c[j]"+c[j]+ " i: "+i+" "+"j:"+j);
if(c[i]!=c[j])
{
s=new StringBuilder("");
i-=h;
j+=h;
h=29;
}
else s.append((char)c[i]);
}
}
i++;
j++;
}
il problema è che arrivato al 128esimo carattere trova -1 ed finisce di ciclare...concludendo il programma!!Ma perchè??Ho notato che se diminuisco la dimensione all'array di byte c, portandola da 1024 a 332 riesco ad arrivare fino a circa il 200esimo poi trova -1 e finisce!!!Ma se i caratteri sono 100000 perchè dopo 200massimo esce?? ??? Grazie a tutti