Sua classe deveria se chamar Contato
, no singular, pois cada instância dela representa um contato e não vários. 
Não é possível criar um arquivo chamado C:\\\
.
Sugiro criar uma constante para o arquivo que você vai manipular, afinal todos os objetos vão ser gravados e lidos do mesmo arquivo:
private static final File ARQUIVO = new File("C:", "contatos.txt");
Siga as boas práticas do Java, renomeie seu método Cadastrar
para cadastrar
, em minúsculo.
Eu faria sua classe Contato
dessa forma:
package trabalho;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class Contato {
public static final File ARQUIVO = new File("C:", "contatos.txt");
private static final String CAMPO_NOME = "Nome";
private static final String CAMPO_EMAIL = "Email";
private static final String CAMPO_TELEFONE = "Telefone";
public static List<Contato> listar() {
List<Contato> contatos = new ArrayList<Contato>();
if (ARQUIVO.exists()) {
try {
BufferedReader reader = new BufferedReader(new FileReader(ARQUIVO));
String linha = null;
do {
Contato contato = new Contato();
boolean setouAlgumCampo = false;
linha = reader.readLine();
setouAlgumCampo |= setarCampo(contato, linha);
linha = reader.readLine();
setouAlgumCampo |= setarCampo(contato, linha);
linha = reader.readLine();
setouAlgumCampo |= setarCampo(contato, linha);
if (setouAlgumCampo) {
contatos.add(contato);
}
} while (linha != null);
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return contatos;
}
public static List<Contato> pesquisar(Predicate<Contato> condicaoDeBusca) {
List<Contato> todos = listar();
List<Contato> encontrados = new ArrayList<Contato>();
for (Contato contato : todos) {
if (condicaoDeBusca.test(contato)) {
encontrados.add(contato);
}
}
return encontrados;
}
private static boolean setarCampo(Contato contato, String linha) {
if (linha != null && !(linha = linha.trim()).isEmpty()) {
String[] textoSeparado = linha.split(":");
String campo = textoSeparado[0];
String valor = textoSeparado[1];
if (campo.equals(CAMPO_NOME)) {
contato.setNome(valor);
return true;
}
if (campo.equals(CAMPO_EMAIL)) {
contato.setEmail(valor);
return true;
}
if (campo.equals(CAMPO_TELEFONE)) {
contato.setTelefone(valor);
return true;
}
}
return false;
}
private String nome;
private String email;
private String telefone;
public Contato() {}
public String cadastrar() {
try {
PrintWriter writer = new PrintWriter(new FileWriter(ARQUIVO, true));
writer.println(CAMPO_NOME + ": " + nome);
writer.println(CAMPO_EMAIL + ": " + email);
writer.println(CAMPO_TELEFONE + ": " + telefone);
writer.flush();
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
return "Erro ao Cadastrar Contato:";
}
return "Cadastro Efetuado Com Sucesso!";
}
public String getEmail() {
return email;
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public void setEmail(String email) {
this.email = email;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
}
Abaixo tem um programinha de exemplo, utilizando a classe Contato
:
package trabalho;
import java.util.List;
public class Exemplo {
public static void main(String[] args) {
Exemplo programa = new Exemplo();
programa.executar();
}
public void executar() {
List<Contato> cadastrados = Contato.listar();
listarContatos(cadastrados);
cadastrarAlgunsContatos();
cadastrados = Contato.listar();
listarContatos(cadastrados);
pesquisarContatosPorNome("Zequinha");
pesquisarContatosPorNome("Beltrano");
pesquisarContatosPorEmail("zequinha@email.com");
pesquisarContatosPorEmail("fulano@email.com");
pesquisarContatosPorTelefone("89 0123-4567");
pesquisarContatosPorTelefone("01 2345-6789");
}
private void listarContatos(List<Contato> contatos) {
System.out.println("Lista de Contatos:");
if (contatos.isEmpty()) {
System.out.println(" Vazia");
} else {
for (Contato contato : contatos) {
System.out.println(" Nome: " + contato.getNome());
System.out.println(" Email: " + contato.getEmail());
System.out.println(" Telefone: " + contato.getTelefone());
System.out.println();
}
}
}
private void cadastrarAlgunsContatos() {
Contato contato = new Contato();
contato.setNome("Fulano");
contato.setEmail("fulano@email.com");
contato.setTelefone("12 3456-7890");
System.out.println(contato.cadastrar());
contato = new Contato();
contato.setNome("Ciclano");
contato.setEmail("ciclano@email.com");
contato.setTelefone("01 2345-6789");
System.out.println(contato.cadastrar());
contato = new Contato();
contato.setNome("Beltrano");
contato.setEmail("beltrano@email.com");
contato.setTelefone("90 1234-5678");
System.out.println(contato.cadastrar());
}
private void pesquisarContatosPorNome(String nome) {
System.out.println("Pesquisando pelo nome \"" + nome + "\"...");
List<Contato> encontrados = Contato.pesquisar(contato -> contato.getNome().contains(nome));
listarContatos(encontrados);
}
private void pesquisarContatosPorEmail(String email) {
System.out.println("Pesquisando pelo email \"" + email + "\"...");
List<Contato> encontrados = Contato.pesquisar(contato -> contato.getEmail().contains(email));
listarContatos(encontrados);
}
private void pesquisarContatosPorTelefone(String telefone) {
System.out.println("Pesquisando pelo telefone \"" + telefone + "\"...");
List<Contato> encontrados = Contato.pesquisar(contato -> contato.getTelefone().contains(telefone));
listarContatos(encontrados);
}
}
Abaixo está a saída do programa:
Lista de Contatos:
Vazia
Cadastro Efetuado Com Sucesso!
Cadastro Efetuado Com Sucesso!
Cadastro Efetuado Com Sucesso!
Lista de Contatos:
Nome: Fulano
Email: fulano@email.com
Telefone: 12 3456-7890
Nome: Ciclano
Email: ciclano@email.com
Telefone: 01 2345-6789
Nome: Beltrano
Email: beltrano@email.com
Telefone: 90 1234-5678
Pesquisando pelo nome "Zequinha"...
Lista de Contatos:
Vazia
Pesquisando pelo nome "Beltrano"...
Lista de Contatos:
Nome: Beltrano
Email: beltrano@email.com
Telefone: 90 1234-5678
Pesquisando pelo email "zequinha@email.com"...
Lista de Contatos:
Vazia
Pesquisando pelo email "fulano@email.com"...
Lista de Contatos:
Nome: Fulano
Email: fulano@email.com
Telefone: 12 3456-7890
Pesquisando pelo telefone "89 0123-4567"...
Lista de Contatos:
Vazia
Pesquisando pelo telefone "01 2345-6789"...
Lista de Contatos:
Nome: Ciclano
Email: ciclano@email.com
Telefone: 01 2345-6789
E abaixo está o conteúdo do arquivo C:\contatos.txt
:
Nome: Fulano
Email: fulano@email.com
Telefone: 12 3456-7890
Nome: Ciclano
Email: ciclano@email.com
Telefone: 01 2345-6789
Nome: Beltrano
Email: beltrano@email.com
Telefone: 90 1234-5678