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:
[code]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());
}
}
[/code]
Não achei exemplos no google que me dessem uma luz.
Obrigado a todos.