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.


