Pessoal, preciso ler um arquivo e ele não pode ser lido de uma vez só, quer dizer, eu nao posso abrir um stream e ler de uma vez so. Outras coisa : preciso usar o stream pra ler o arquivo!
alguem pode ajudar a entender o erro? como e que esse array estoura? onde isso acontece? pq???
java.lang.IndexOutOfBoundsException
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:199)
at inputoutputstream.AosPoucos.main(AosPoucos.java:36)
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintStream;
public class AosPoucos {
public static void main(String[] args) {
File file = new File("C:\testeStream.txt");
// algumas variaveis
int tam = 10;
int retorno = 0;
int inicio = 0;
int fim = tam;
int length = (int)file.length();
// byte[] que guarda tudo
byte bytes[] = new byte[(int)file.length()];
try {
// apontei para o arquivo
InputStream is = new FileInputStream(file);
// enquanto nao chegar ao fim...
while ( (retorno = is.read(bytes, inicio, fim)) > 0 ) {
System.out.println("de " + inicio + " ate " + fim);
// aqui o inicio é aumentado pra onde parou da ultima vez...
// o fim é aumentado para mais "10" depois so inicio
inicio += retorno;
fim = inicio + tam;
}
// mostra como ficou a ultima iteracao
System.out.println("de " + inicio + " ate " + fim);
System.out.println(new String(bytes) + " " + fim);
} catch (Exception e) {
e.printStackTrace();
System.err.println("pro de " + inicio + " ate " + fim);
}
}
}