Duvida com ArrayList de InputStream

2 respostas
L

Galera, eu estou executando um código no prompt de comando e ele me manda mais de uma linha as vezes.

Quando eu vou ler esse ArrayList ele me manda apenas a primeira linha de cada resultado.

public ArrayList<InputStream> dsqueryLogin(String nome, ArrayList<String> domain) throws IOException{
		ArrayList<InputStream> input = new ArrayList<InputStream>();
		for(int i = 0; i < domain.size(); i++){
			Process process = Runtime.getRuntime().exec("dsquery user " + domain.get(i) + " -name " + nome + "*");
			System.out.println("dsquery user " + domain.get(i) + " -name " + nome + "*");
				input.add(process.getInputStream());
		}
		return input;
	}

	public ArrayList<String> lerConsole(ArrayList<InputStream> input){		
		ArrayList<String> linhaConsole = new ArrayList<String>();
		try {			
			for(int i = 0; i < input.size(); i++){
				BufferedReader in = new BufferedReader(new InputStreamReader(input.get(i)));
				while(in.readLine() != null){
					linhaConsole.add(in.readLine());
				}
			}
			return linhaConsole;
		} catch (IOException exception) {  
			exception.printStackTrace();  
		}
		return null;
	}

2 Respostas

matheuslmota

O erro está aqui:

while(in.readLine() != null){ linhaConsole.add(in.readLine()); }

no loop você está perdendo o valor de uma linha. Você deve fazer o seguinte:

String linha; while((linha = in.readLine()) != null){ linhaConsole.add(linha); }

A cada iteração você está chamando o readLine duas vezes, sendo que o primeiro valor é perdido.

matheuslmota

duplicado…

Criado 27 de junho de 2013
Ultima resposta 27 de jun. de 2013
Respostas 2
Participantes 2