Estou há alguns dias com um problema chato, que parece de solução simples…mas não consigo resolvê-lo. Tenho um cadastro de filmes bem simples que é gravado num arquivo .TXT, segue as minhas classes:
Classe Filme
public class Filme implements Comparable<Filme>{
private int codigo;
private String genero;
private String titulo;
private List<Ator> atoresPrin ;
public List<Ator> getAtoresPrin() {
return atoresPrin;
}
public void setAtoresPrin(List<Ator> atoresPrin) {
this.atoresPrin = atoresPrin;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getGenero() {
return genero;
}
public void setGenero(String genero) {
this.genero = genero;
}
public int compareTo(Filme outroFilme) {
return this.titulo.compareTo(outroFilme.getTitulo());
}
@Override
public String toString() {
return codigo + " " +genero + " " + titulo + " " + atoresPrin;
}
public String Subs(String titulo) {
String padrao = "\\s";
Pattern regPat = Pattern.compile(padrao);
Matcher matcher = regPat.matcher(titulo);
String res = matcher.replaceAll("_");
return res;
}
public String Subs2(String titulo) {
String padrao = "[";
Pattern regPat = Pattern.compile(padrao);
Matcher matcher = regPat.matcher(titulo);
String res = matcher.replaceAll("_");
return res;
}
}
Classe Ator
public class Ator {
private String nome;
public Ator(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return nome;
}
}
Classe Filmes Util
public class FilmeUtil {
private static List<Filme> listaFilmes = new ArrayList<Filme>();
public static void addFilme(Filme filme) {
listaFilmes.add(filme);
System.out.println(listaFilmes);
}
public static List<Filme> getListaFilmes() {
Collections.sort(listaFilmes);
return listaFilmes;
}
public static void removeFilme(int index) {
listaFilmes.remove(index);
}
public static void grava() throws IOException {
File f = new File("c:\\newMovie.txt");
f.delete();
FileWriter fout = new FileWriter("c:\\newMovie.txt", true);
PrintWriter pout = new PrintWriter(fout);
for (Filme filme : listaFilmes) {
pout.println(filme);
}
fout.close();
pout.close();
}
}
Método que Lista os Filmes
public ListaFilmes() {
initComponents();
jListFilmes.setListData(FilmeUtil.getListaFilmes().toArray());
}
Método que recupera os filmes (acredito que o problema seja aqui)
private void recuperaFilmes() {
List<Ator> listaAtor = new ArrayList<Ator>();
String vetor[] = null;
try {
FileReader fin = new FileReader("c:\\newMovie.txt");// não possui método para ler linha inteira
BufferedReader buf = new BufferedReader(fin);
String linha = buf.readLine();
while (linha != null) {
Filme f = new Filme();
vetor = linha.split(" ");
f.setCodigo(Integer.parseInt(vetor[0]));
f.setGenero(vetor[1]);
f.setTitulo(vetor[2]);
listaAtor = new ArrayList<Ator>();
listaAtor.add(new Ator(vetor[3]));
listaAtor.add(new Ator(vetor[4]));
f.setAtoresPrin(listaAtor);
FilmeUtil.addFilme(f);
linha = buf.readLine();
}
buf.close();
fin.close();
} catch (Exception e) {
System.out.println("Erro:" + e.getMessage());
}
}
Método que faz a gravação (método da classe FilmesUtil)
public static void grava() throws IOException {
File f = new File("c:\\newMovie.txt");
f.delete();
FileWriter fout = new FileWriter("c:\\newMovie.txt", true);
PrintWriter pout = new PrintWriter(fout);
for (Filme filme : listaFilmes) {
pout.println(filme);
}
fout.close();
pout.close();
}
PROBLEMA:
Muito Obrigado pela paciência pessoal.