[RESOLVIDO] Método read() de Reader

3 respostas
Rafael_Mesquita_Mour

Pessoal, é o seguinte eu tenho um exercício aqui na apostila que são exercícios que fazemos durante a aula no curso de Java e agora que estou refazendo o exercício fiquei com uma dúvida sobre o funcionamento do código abaixo:

import java.io.*;

public class Programa10 {
	public static void main(String[] args) {
		char [] lista = new char[50];
		File f = new File("C:\Users\Rafael\Documents\rafael_workspace\Teste10.txt");
		try{
			Writer fw = new FileWriter(f);
			fw.write("sersoft java scjp");
			fw.flush();
			fw.close();
			
			Reader fr = new FileReader(f);
			while(fr.read(lista) != -1){
				for(char c : lista){
					if(c != 0){
						System.out.print(c);
					}
				}
			}
		} catch (IOException e){
			System.out.println("O arquivo não pôde ser criado!");
		}
	}
}

A minha dúvida é:

"Como o "System.out.print(c);" pode estar imprimindo caracteres, sendo que o array de char está vazio, ou seja, tem 50 posições que não foram preenchidas? Isso tem alguma coisa a ver com o método "fr.read(lista)"?"

Valeu!

3 Respostas

viniciusalvess

não tem haver com método AnyReader.read() , tem haver com o for each ;

rmendes08

Sim, o array é preenchido pelo método read(). Esse método lê caracteres de um arquivo preenchendo um array passado como parâmetro.

Rafael_Mesquita_Mour

Ah entendi, significa então que ao passar “lista” como argumento do método read(char [] c), o método irá preenchê-lo com o conteúdo do arquivo e depois o enhanced-for irá capturar cada caractere…

Valeu!

Criado 3 de março de 2011
Ultima resposta 4 de mar. de 2011
Respostas 3
Participantes 3