Ler Teclado

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

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

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?

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

[quote=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[/quote]

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

Segue abaixo:

[code]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();
	}
}

}
[/code]

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

[]'s

[quote=Delita]Segue abaixo:

[code]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();
	}
}

}
[/code]

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

[]'s[/quote]
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();
		
	}

}

[quote=Delita]Segue abaixo:

[code]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();
	}
}

}
[/code]

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

[]'s[/quote]

ô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!

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

[quote=cabralsan]
Acho que acertei!Se tiverem sugestões eu agradeço![/quote]
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.