16 de out de 2012

Ler e inverter arquivos em Java (Dica)

Ontem a noite precisei fazer algo simples que pode ser interessante postar aqui. Precisei inverter uma String com isso precisei ler essa String qualquer no console e fazer a inversão dela. Eu usei duas coisas importantes no Java, a Classe Scanner e a StringBuffer. Com elas podemos resolver vários de nosso problemas com Strings em geral na linguagem java.



Vamos a classe Scanner.
Antes do Java 5 para ler um console ou até mesmo um arquivo precisavamos usar a classe FileReader:
FileReader reader = new FileReader(file);
Nela passamos uma Arquivo para ela usando a classe File:
File file = new File("/home/rogerio/Desktop/file.txt");
Ao retornar o conteúdo do arquivo da Classe FileReader, passamos esse conteúdo para a Classe BufferedReader, com isso conseguimos manipula-lá
BufferedReader in = new BufferedReader(reader);
Somente com o BufferedReader, conseguimos manipular essa String, veja no código completo:
public class ReaderFile {
 public static void main(String arg[]) {
  try {
   File file = new File("/home/rogerio/Desktop/file.txt");
   FileReader reader = new FileReader(file);
   BufferedReader in = new BufferedReader(reader);
   String string;
   while ((string = in.readLine()) != null) {
    System.out.println(string);
   }
   in.close();
  } catch (IOException e) {
   e.printStackTrace();
  }

 }
}
Mas podemos usar esse mesmo exemplo de leitura usando a Classe Scanner, isso simplifica bem a leitura do arquivo. Para usá-la precisamos passar o mesmo arquivo lido com a classe File:
Scanner scanner = new Scanner(file);
Conseguimos manipular o que está sendo digitado no console atravês do hasNext, que fica esperando um comando de Enter, nesse exemplo a saída será a impressão no console:
  while (scanner.hasNext()) {
    System.out.println(scanner.next());
  }
Veja no código completo:
public class FileScanner {
  public static void main(String arg[]){
   try {
    File file = new File("/home/rogerio/Desktop/file.txt");
          Scanner scanner = new Scanner(file);
          while (scanner.hasNext()) {
            System.out.println(scanner.next());
          }
          scanner.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }
  }
}
A classe scanner também pode ser usada para ler o o conteúdo do console, Para isso precisamos passa para a Classe Scanner o System.in do java.util, onde ele pegara o conteúdo que será digito no console. Nesse exemplos vamos ler uma String no console e ela será lida com a seguinte linha, onde nextLine sempre vai esperar a próxima linha digitada.
String frase = scanner.nextLine();
Passamos o conteúdo da String recebida para a Classe StringBugger.
StringBuffer fraseInversa = new StringBuffer(frase);
Agora chegamos no no que eu falei no começo do artigo onde precisei inverter a String, para isso usei o metodo reverse do StringBuffer.
 
fraseInversa.reverse();
Segue o Exemplo completo:
public class InveterString {
 
 public static void main(String[] args) {

  Scanner scanner = new Scanner(System.in);
  
  System.out.println("Digite a String inversa:");
  
  String frase = scanner.nextLine();
 
  StringBuffer fraseInversa = new StringBuffer(frase);
 
  fraseInversa.reverse();

  System.out.println(fraseInversa);

  System.exit(0);
 }
}
Deixo aqui uma pequena dica para leitura de arquivos e console com a classe Scanner, mas a intenção é fazer uma peque introdução para aprofundamos na manipulação de String na linguagem Java, falaremos mais a fundo de String nos próximos artigos. Até.

Nenhum comentário:

Postar um comentário