StringBuilder e StringBuffer
As classes java.lang.StringBuilder e java.lang.StringBuffer precisam ser utilizadas quando você tiver que fazer diversas modificações em Strings.
Um uso comum de objetos StringBuilder e StringBuffer é na E/S de arquivos, quando fluxos amplos de entrada e com alteração constante estão sendo manuseados pelo programa.
A classe StringBuilder foi acrescentada no Java 5. Ela tem justamente a mesma API que a classe StringBuffer, exceto por StringBuilder não ser seguro em relação aos threads.
Ou seja, seus métodos não são sincronizados.
Analise um exemplo completo, que esquematiza uma comparação entre as classes StringBuilder e String.
package devmedia;
public class StringTeste {
/**
* @param args
*/
public static void main(String[] args) {
String j = "abc";
System.out.println(j.hashCode());
j=j.concat("def");
System.out.println(j);
System.out.println(j.hashCode());
System.out.println();
StringBuffer sb = new StringBuffer("abc");
System.out.println(sb.hashCode());
sb.append("def");
System.out.println("sb: "+sb);
System.out.println(sb.hashCode());
}
}
Saída:
96354
abcdef
-1424385949
2031692173
sb: abcdef
2031692173
Classe File
Objetos File são empregados para representar os arquivos.
Iniciamos com alguns exemplos simples de criação de arquivos, de leitura e de escrita a partir deles.
Iremos criar um novo arquivo. Veja o código:
import java.io.File;
import java.io.IOException;
public class WriterMain {
/**
* @param args
*/
public static void main(String[] args) {
try{
boolean newArquivo = false;
File f = new File("arquivo.txt");
System.out.println(f.exists());
novoArquivo = f.createNewFile();
System.out.println(newArquivo);
System.out.println(f.exists());
}catch (IOException e) {
}
}
}
Saída:
false
true
true
A variável newArquivo, inicialmente, é atribuida com false. É gerado um objeto File, mas não um arquivo físico ainda. O método f.exists() serve para termos ciência, se de fato há um arquivo no disco rígido.
A possível exceção pode ser decorrência da incapacidade em se criar o arquivo, por uma questão de permissão, ou de caminho errado.
FileReader e FileWriter
Veja o código abaixo.
package devmedia;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class GeraArquivo {
/**
* @param args
*/
public static void main(String[] args) {
try{
File fl = new File("testando.txt");
fl.createNewFile();
System.out.println(fl.getAbsolutePath());
FileWriter fw = new FileWriter(fl);
fw.write("Java\nDevmedia");
fw.flush();
fw.close();
}catch (IOException e) {
}
}
}
Vamos analisar.
-
FileWriter fw = new FileWriter(file) realize 3 tarefas:
- Criou uma variável de referência FileWriter.
- Criou um objeto FileWriter e o atribuiu a fw.
- Criou um arquivo vazio em disco.
- Escrevemos no arquivo, com o método write(), realizamos um flush() e um close().
O método flush() garante que a última parte dos dados seja realmente escrita no arquivo.
Sempre que finalizar a utilização de um arquivo, seja escrevendo ou lendo nele, é necessário chamar o método close().
Continuaremos falando um pouco mais sobre a API java para tratamento de arquivos.
Leia todos artigos da série
- Desmistificando a Certificação SCJP6 - Parte I
- Desmistificando a Certificação SCJP6 - Parte II
- Desmistificando a Certificação SCJP6 - Parte III
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 1
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 2
- Desmistificando a Certificação SCJP6 - Parte V - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 3/3
- Operadores apropriados - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 1
- Instruções if e switch - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 2
- Iteradores e loops - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - A
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - B
- Tratamento de Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 1
- Definindo Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 2
- Assertivas Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte IX - Parte 4
- String: Desmistificando a Certificação SCJP6 - Parte X - Parte 1
- Combinação de Classes E/S: Desmistificando a Certificação SCJP6 - Parte X - Parte 3
- Utilizando Arquivos e Diretórios: Desmistificando a Certificação SCJP6 - Parte X - Parte 4
- Console e Serialização: Desmistificando a Certificação SCJP6 - Parte X - Parte 5
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 A
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 B
- Expressões Regulares: Desmistificando a Certificação SCJP6 Parte XI - Parte 1
- Lista Negada e Metacaracteres: Desmistificando a Certificação SCJP6 Parte XI - Parte 2
- Metacaracteres Âncora e Busca: Desmistificando a Certificação SCJP6 Parte XI - Parte 3