Como Abrir um arquivo .txt numa área?

4 respostas
N

Bom Galera, abaixo vai todo o código que tenho na classe, eu tenho uma área onde posso digitar o texto, ( JText Area ) , tenho também um JFile Chooser para abrir aquela caixinha e escolher um arquivo, agora minha pergunta é: Como escolher um arquivo .txt e ele ser aberto no meu projeto ? :cry:

package Fernandinha;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class JanelaPrincipal extends JFrame{

    private JMenuBar barra;
    private JMenu menuArquivo;
    private JMenu menuEditar;
    private JMenuItem itemNovo;
    private JMenuItem itemAbrir;
    private JMenuItem itemRecortar;
    private JMenuItem itemCopiar;
    private JMenuItem itemColar;
    private JTextArea area;                   // todos os menus da barra


    public JanelaPrincipal(){
        barra = new JMenuBar();
        menuArquivo = new JMenu("Arquivo");
        itemNovo = new JMenuItem("Novo");
        itemNovo.addActionListener(new ControladorBloco());
        itemAbrir = new JMenuItem("Abrir");
        itemAbrir.addActionListener(new ControladorAbrir());
        barra.add(menuArquivo);
        menuArquivo.add(itemNovo);
        menuArquivo.add(itemAbrir);
        menuEditar = new JMenu("Editar");
        itemRecortar = new JMenuItem("Recortar");
        itemRecortar.addActionListener(new ControladorRecortar());
        itemCopiar = new JMenuItem("Copiar");
        itemCopiar.addActionListener(new ControladorCopiar());
        itemColar = new JMenuItem("Colar");
        itemColar.addActionListener(new ControladorColar());
        barra.add(menuEditar);
        menuEditar.add(itemRecortar);
        menuEditar.add(itemCopiar);
        menuEditar.add(itemColar);
        super.setJMenuBar(barra); 
        
        
    }
     public void clicouEmBloco (){
        area = new JTextArea ();
        super.getContentPane().add(area);
    }
class ControladorBloco implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        clicouEmBloco();
    }
}

 public void clicouEmRecortar (){
        area.cut();
    }
class ControladorRecortar implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        clicouEmRecortar();
    }
}
public void clicouEmCopiar (){
        area.copy();
    }
class ControladorCopiar implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        clicouEmCopiar();
    }
}
public void clicouEmColar (){
        area.paste();
    }
class ControladorColar implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        clicouEmColar();
    }
}
public void clicouEmAbrir (){

        JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog(null);
    }
class ControladorAbrir implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        clicouEmAbrir();
    }
}

}

4 Respostas

jctosta

Essa é fácil, lá vai:

/**
     * Retorna o texto do arquivo solicitado
     *
     * @param file O arquivo desejado
     * @return O texto extraído
     * @throws java.io.FileNotFoundException
     * @throws java.io.IOException
     */
    public String getFileText(File file) throws FileNotFoundException, IOException {

        int fileLength = (int) file.length();
        int nChars = -1;
        // progress updates after every blockSize chars read
        int blockSize = Math.max(1024, fileLength / 100);
        int p = blockSize;
        char[] buffer = new char[32];
        StringBuilder contents = new StringBuilder();
        BufferedReader rdr = new BufferedReader(new FileReader(file));
        while ((nChars = rdr.read(buffer)) != -1) {
            contents.append(buffer, 0, nChars);
            if (contents.length() > p) {
                p += blockSize;
            }
        }
        return contents.toString();
    }

O método acima extrai o texto de um arquivo e o insere em uma String, para adicionar ao JTextArea, utilize o método setText(""), utilizando como parâmetro a String que você extraiu no método anterior.

Esse método também é util caso você deseja obter o tamanho do arquivo para utilização com JProgressBar, ele determina o tamanho máximo e dentro do while você pode atualizar o progressBar a cada byte lido.

Espero ter ajudado.

N

Caramba, você podia colocar esse código dentro do meu para me situar?
ou isso será numa nova classe do projeto ?

jctosta

É só um método, adicione ao seu código, pode ser acima ou abaixo de qualquer um dos seus outros métodos.

Eu nem vi seu código, apenas peguei um código antigo que tinha aqui e colei.

Vlw!!!

danielfns

Aqui tem algo sobre:

http://www.javafree.org/viewtopic.jbb?t=9794

Criado 16 de junho de 2009
Ultima resposta 16 de jun. de 2009
Respostas 4
Participantes 3