Gerar e abrir arquivo .RTF

1 resposta
JhowTroMundo

Olá pessoal.

Alguns já sabem que estou trabalhando numa aplicação para uma certa empresa de SP. Talvez esse projeto seja integrado com o sistema de publicção de noticias online de lá, e estou no caminho de fazer um bom trabalho, com a ajuda de voces, é claro. Aprendi muitas coisas aqui com exemplos e dicas, e agradeço a todos.

Um dos moderadores me passou uma classe que gera e le arquivos txt, e a minha aplicação está funcionando perfeitamente com ela.

Mas fiquei empolgado com a ideia de gerar arquivos rtf, pois é possível salvar também a formatação do texto. Depois vou aprender a como formatar o texto também (bold e italic, necessariamente), é claro. Mas o principal, por enquanto, é salvar e abrir.

É possivel criar uma classe correspondende à seguinte, que gera arquivo texto, que gere um arquivo rtf?

Que classes devo pesquisar? (acho que IRepor e uma outra que esqueço o nome não me servem).

Segue a classe que gera txt:

import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.swing.JFileChooser;
//import javax.swing.filechooser.FileFilter;

public class Arquivo {
    //A classe JFileChooser é a versão Swing da FileDialog
    private JFileChooser fileChooser = new JFileChooser();
     //filtro = new ExtensionFileFilter();


    File file;

    public boolean salvar(String texto){
        if (file == null)
            return salvarComo(texto);

        //Criamos um PrintWriter, para escrever no arquivo.
        PrintWriter pw = null;
        try {
            //Escrevemos no arquivo.
            pw = new PrintWriter(file);
            pw.println(texto);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            //Fechamos o arquivo.
            if (pw != null) {
                pw.close();
            }
          return true;
        }
    }
    
    
    public boolean salvarComo(String texto) {
        //Mostramos a caixe de save. O método retorna APPROVE_OPTION caso o usuário tenha pressionado o ok
        //Portanto, se não retornar isso, saímos do método (ele pressionou cancel ou fechou a caixa sem selecionar arquivo nenhum).
        if (fileChooser.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) {
            return false;
        }

        //Obtemos o arquivo selecionado pelo usuário
        file = fileChooser.getSelectedFile();

        if(!(file.getName().endsWith(".txt"))){

        }

        System.out.println(file);

        //Criamos um PrintWriter, para escrever no arquivo.
        PrintWriter pw = null;
        try {
            //Escrevemos no arquivo.
            pw = new PrintWriter(file);
            pw.println(texto);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            //Fechamos o arquivo.
            if (pw != null) {
                pw.close();
            }
          return true;
        }
    }

    

    public List<String> abrir() {
    //Mesmo esquema do método acima, mas agora usamos a caixa de abrir arquivo.
    if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {
        return new ArrayList<String>();
    }

    //fileChooser.addChoosableFileFilter(filter);

    file = fileChooser.getSelectedFile();
    //Criamos a lista que conterá as linhas lidas do arquivo.
    List<String> linhas = new ArrayList<String>();

    //Criamos um scanner, para ler do arquivo.
    Scanner scan = null;
    try {
        scan = new Scanner(file);
        //Enquanto o arquivo tiver linhas
        while (scan.hasNextLine()) {
            //Lemos a linha
            linhas.add(scan.nextLine());
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        //Fechamos o arquivo
        if (scan != null) {
            scan.close();
        }
    }
    //Retornamos o texto lido.
    return linhas;
}


    public static void main (String[] args){
        Arquivo arquivo = new Arquivo();

        System.out.println(arquivo.abrir());
    }
}

Não achei exemplos no google que me dessem uma luz.

Obrigado a todos.

1 Resposta

davidbuzatto

Sinceramente não entendi muito bem sua dúvida.
Vc quer ler e salvar um arquivo .rtf, mas vc já tem essa funcionalidade na classe que apresentou. Um .rtf é um arquivo de texto com formatação rtf então basicamente não haveria problema algum em usar um PrintWriter para salvar o arquivo.
Agora, se você quer um componente para editar o arquivo lido e que vai ser gravado a história é outra.

Você pode começar dando uma olhada nos pacote javax.swing.text.rtf e javax.swing.text e dando uma pesquisada no google por swing rtf

Criado 10 de janeiro de 2010
Ultima resposta 10 de jan. de 2010
Respostas 1
Participantes 2