Como ler um arquivo txt inteiro sem ler linha por linha ?
Estou lendo um documento através do BufferedReader e FileReader, utilizando o método readLine() porem queria ler o arquivo por inteiro de uma vez só, sem passar linha por linha…
Alguem tem alguma dica ?
Você pode fazer assim:
http://stackoverflow.com/questions/4716503/best-way-to-read-a-text-file
public String readDoc(File f) {
StringBuffer text = new StringBuffer();
int read, N = 1024 * 1024;
char[] buffer = new char[N];
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while(true) {
read = br.read(buffer, 0, N);
text.append(new String(buffer, 0, read));
if(read < N) {
break;
}
}
} catch(Exception ex) {
ex.printStackTrace();
}
return text.toString();
}
Cara, o que esse código está fazendo ?
Tem como add alguns comentários ae ?
Vlw !
[quote=paulohms]Como ler um arquivo txt inteiro sem ler linha por linha ?
Estou lendo um documento através do BufferedReader e FileReader, utilizando o método readLine() porem queria ler o arquivo por inteiro de uma vez só, sem passar linha por linha…
Alguem tem alguma dica ?[/quote]
Pergunta imbecil número um - digamos que você leia o arquivo inteiro dentro da memória (cuidado com isso, por favor - não se esqueça que Java não aloca mais memória que o especificado na linha de comando).
O que você quer realmente fazer com ele?
a) Quero o tal arquivo separado em um array ou ArrayList de strings, cada uma com uma linha.
b) Não quero saber o que o arquivo tem, só sei que ele é um montão de bytes que vou copiar para outro lugar.
c) Quero o tal arquivo como um List de objetos já todos certinhos a partir de cada linha.
d) ???
entanglement,
O negocio é o seguinte, tenho um documento com algumas linhas no quais preciso retirar alguns resultados através de uma regex… sendo que se eu tiver a leitura de cada linha não tem como restringir a mesma…
A minha pergunta não foi idiota, se eu perguntei é pq tenho dúvidas, acho que vc não nasceu já sabendo td… um dia também teve dúvidas e para aprender precisou ir atras delas…
Vlw pela resposta.