Dúvida com arquivos

Boa noite, pessoal.
Estou começando a aprender a manipular arquivos em Java e gostaria de saber como os códigos abaixo podem ser otimizados.
Há algo que eu possa mudar neles para que eles fiquem mais corretos, elegantes ou que obedeçam às boas práticas de programação?

//Lê um arquivo de texto. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser jFileChooser = new JFileChooser(); jFileChooser.setDialogTitle("Arquivos");//Define o nome da janela. jFileChooser.setMultiSelectionEnabled(true);//Ativa a opção de selecionar múltiplos arquivos. int abriu = jFileChooser.showOpenDialog(this); if (abriu == JFileChooser.APPROVE_OPTION) { try { this.arquivo = jFileChooser.getSelectedFile(); FileReader reader = new FileReader(arquivo); BufferedReader leitor = new BufferedReader(reader); // Testa se o arquivo existe, se pode ser lido e se é um arquivo. if (arquivo.exists() && arquivo.canRead() && arquivo.isFile()) { this.jTextArea1.setText(null); String linha; while (leitor.ready()) { linha = leitor.readLine();//Pega uma linha inteira do arquivo. this.jTextArea1.append(linha + '\n'); } leitor.close(); reader.close(); } } catch (FileNotFoundException ex) { JOptionPane.showMessageDialog(this, "Arquivo não encontrado.", "Erro", JOptionPane.ERROR_MESSAGE); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "Erro no arquivo.", "Erro", JOptionPane.ERROR_MESSAGE); } catch (NullPointerException ex) { JOptionPane.showMessageDialog(null, "Ponteiro nulo.", "Erro", JOptionPane.ERROR_MESSAGE); } } }

//Escreve em um arquivo. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { try { //"conteudo.endereço" é uma string com o endereço do arquivo. FileWriter gravador = new FileWriter(conteudo.endereço); PrintWriter saida = new PrintWriter(gravador); saida.println(conteudo.endereço);//Grava no arquivo o endereço dele. saida.close(); gravador.close(); } catch (IOException ex) { Logger.getLogger(Janela.class.getName()).log(Level.SEVERE, null, ex); } }

Obrigado.

Esqueci de dizer que este código foi feito com o swing no netdbeans, não sei se isso faz alguma diferença.