Ler Teclado

9 respostas
F

Pessoal…

Tô fazendo um programinha bem básico que nao vai usar interface grafica nem nada… vou rodar pelo prompt mesmo com “java <nome>”.

Minha duvida é em relacao a leitura do teclado:

  • Existe algum comando fácil pra ler o teclado (semelhante so System.out.println para mostrar mensagens) ???

sei lá… algo tipo “System.in.readln” ??? :smiley:

se nao tiver… como faço pra deixar o prompt esperando por uma entrada do usuario ??

Valeu

9 Respostas

R

Opa, tudo bom?

entao, eh bem simples ler do teclado. Veja este exemplo:

import java.io.*;

public class LeTeclado
{
	public static void main(String args[])
	{
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

			// Le entao a palagra SAIR nao seja digitada
			String linha = "";
			while (!linha.equals("SAIR")) {
				linha = reader.readLine();

				System.out.println("Voce digitou: "+ linha);
			}
		}
		catch (IOException e) {
			System.out.println("Erro: "+ e);
		}
	}
}

[]'s
Rafael Steil

E

Desculpa entrar na questão mas achei interessante o código…mas
o programa so lê o que é digitado no console seria possivel captar
de qualuqer outra janela e salvar em arquivo?

R

Como assim de qualquer janela? voce diz aplicacao grafica? de qualquer maneira, eh possivel sim, e bem simples. No forum mesmo ja teve uma questao parecida, onde o cara queria gravar em arquivo o conteudo que ele digitava nos JTextField… De uma procurada no forum sobre isso!!

Rafael

C

Rafael Steil:
Opa, tudo bom?

entao, eh bem simples ler do teclado. Veja este exemplo:

import java.io.*;

public class LeTeclado
{
	public static void main(String args[])
	{
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

			// Le entao a palagra SAIR nao seja digitada
			String linha = "";
			while (!linha.equals("SAIR")) {
				linha = reader.readLine();

				System.out.println("Voce digitou: "+ linha);
			}
		}
		catch (IOException e) {
			System.out.println("Erro: "+ e);
		}
	}
}

[]'s
Rafael Steil

Olá amigo, vc poderia citar um exemplo de como seria p copiar o que foi digitado na console para um arquivo log.txt?
Obrigado!

D

Segue abaixo:

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class EntradaDeUmArquivo {

	public static void main(String[] args) throws IOException {
		OutputStream os = new FileOutputStream("arquivo.txt");
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);
		Scanner entrada = new Scanner(System.in);

		while (entrada.hasNextLine()) {
			String linha = entrada.nextLine();
			bw.write(linha);
			bw.close();
		}
	}

}

Existe como utilizar também o PrintStream, mas ainda vou ver como utiliza e depois posto aqui ok?

[]'s

M
Delita:
Segue abaixo:
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class EntradaDeUmArquivo {

	public static void main(String[] args) throws IOException {
		OutputStream os = new FileOutputStream("arquivo.txt");
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);
		Scanner entrada = new Scanner(System.in);

		while (entrada.hasNextLine()) {
			String linha = entrada.nextLine();
			bw.write(linha);
			bw.close();
		}
	}

}

Existe como utilizar também o PrintStream, mas ainda vou ver como utiliza e depois posto aqui ok?

[]'s
Com PrintWritter também é possível:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Scanner;


public class LerEEscrever {

	public static void main(String[] args) {
		// declara um Scanner para a entrada e um PrintWriter para saída
		Scanner entrada = null;
		PrintWriter saida = null;
		
		// inicializa os objetos
		entrada = new Scanner(System.in);
		try {
			saida = new PrintWriter(new FileOutputStream("log.txt", true));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			// TODO tratar corretamente as excessões
		}
		
		// lê e vai gravando os dados
		String linha = null;
		while (!(linha = entrada.nextLine()).equals("SAIR")) {
			saida.println(linha);
		}
		
		// fecha a entrada e a saída de dados
		entrada.close();
		saida.close();
		
	}

}
C
Delita:
Segue abaixo:
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class EntradaDeUmArquivo {

	public static void main(String[] args) throws IOException {
		OutputStream os = new FileOutputStream("arquivo.txt");
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);
		Scanner entrada = new Scanner(System.in);

		while (entrada.hasNextLine()) {
			String linha = entrada.nextLine();
			bw.write(linha);
			bw.close();
		}
	}

}

Existe como utilizar também o PrintStream, mas ainda vou ver como utiliza e depois posto aqui ok?

[]'s

ôpa, valeu meu caro!!!Sou iniciante em Java...
Deu pra fazer da seguinte forma também, graças a sua ajuda:
Criei duas classes:
public class Arquivo1 {
public static void main(String[]args){
lerArquivo("c:\\arquivos1\\log.txt");
}
public static void lerArquivo(String arquivo){
File f = new File(arquivo);
if (!f.exists()){
System.out.println("Arquivo: "+ arquivo+ " -----> não existe");
return;
}
try {
//is representa o fluxo de entrada a partir de um arquivo
InputStream is = new FileInputStream (arquivo);//armazena a entrada de dados no arquivo
//imputStreamReader é uma classe p/ converter os bytes em Chars
InputStreamReader isr = new InputStreamReader(is);
//BufferedReader é uma classe para armazenar as chars em memória
BufferedReader br = new BufferedReader (isr);
String s = br.readLine();//primeira linha
while (s != null){
System.out.println(s);
s = br.readLine();
}
}catch (Exception x){
System.out.println(x.getMessage());
}
}
}

e também criei esta outra:

import java.io.*;

public class EntradaTexto {

public static void main(String args[]) {


try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileWriter o = new FileWriter("c:\\arquivos\\log.txt");
PrintWriter out = new PrintWriter (o);
System.out.println("Digite algumas linhas na console e tecle enter para encerrar o programa...");
String linha = "wsant";
while (!linha.equals("")) {
linha = reader.readLine();

out.println(linha);
}
System.out.println("Programa encerrado!!!! "+ linha);
out.flush();
o.close();
}//fecha try

catch (IOException e) {
System.out.println("Erro: "+ e);
} //fecha catch
System.out.println("-----------------------------------------");
System.out.println("Veja abaixo o que você digitou na console:");
System.out.println("-----------------------------------------");
Arquivo1.lerArquivo("c:\\arquivos\\log.txt");
}//fecha public
}

Acho que acertei!Se tiverem sugestões eu agradeço!

D

Bacana cabralsan, vou tentar também dar uma olhada no que você e o marcobiscaro postaram além do PrintStream que comentei.

Também sou iniciante em Java e fico feliz de poder ajudar o pessoal com o pouco que conheço.

[]'s

M

cabralsan:

Acho que acertei!Se tiverem sugestões eu agradeço!

Logo de cara, a primeira sugestão é que use as tags “code” quando for postar código, Se tiver alguma dúvida, existe um tópico fixo, na parte superior da lista de tópicos, onde é explicado passo a passo como usar as tags, Depois vou ver com calma seu código e dou alguma sugestão.

Criado 4 de outubro de 2002
Ultima resposta 10 de jan. de 2009
Respostas 9
Participantes 6