Dae galera!! Eu sei como criar um arquivo e tal, mas não tenho idéia de como copiar um arquivo qualquer, por ex um txt e antes de copia-lo, subsitui determinada palavra por outra!! Alguém tem algum link, código ou alguma idéia de como se faz isso?
Valeu!!!
Ola
Por coencidencia eu acabei de fazer um mini prgrama aqui que atraza alguns segundos uma legenda de um filme que eu tava lá em casa… ele faz mais ou menos isto que vc quer… em determinada condição ele subistiui o texto original do arquivo…
Mas isto é bem simples de ser feito, de outra forma, o modo que fiz é que eu preciso, apartir de um ponto, subistituir todos… mas acho que dá pra fazer uma coisa mais “pontual”, atraves do java.io.RandomAccessFile…
public class Main {
private File subtitle;
private File subtitleDest;
private int timeSeekInSecunds = -2;
private int numLegendAfter = 247;
private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
public Main(){}
public void getFile(){
JFileChooser chooser = new JFileChooser();
int option = chooser.showOpenDialog(null);
if(option != JFileChooser.APPROVE_OPTION){
return;
}
this.subtitle = chooser.getSelectedFile();
this.subtitleDest = new File(subtitle.getParentFile(), this.subtitle.getName()+"_2");
}
public void initOperation() throws IOException, ParseException{
FileReader fr = new FileReader(this.subtitle);
BufferedReader reader = new BufferedReader(fr);
if(!this.subtitleDest.exists()){
this.subtitleDest.createNewFile();
}
PrintWriter writer = new PrintWriter(this.subtitleDest);
String line = null;
while((line= reader.readLine()) != null){
try{
int subLine = Integer.parseInt(line);
if(subLine >= this.numLegendAfter){
writer.println(line);
line = reader.readLine();
GregorianCalendar gc = new GregorianCalendar();
System.out.println("chenging = "+line);
String[] strs = line.split("-->");
Date d1 = format.parse(strs[0].substring(0, strs[0].indexOf(",")));
gc.setTime(d1);
gc.add(Calendar.SECOND, this.timeSeekInSecunds);
strs[0] = format.format(gc.getTime())+strs[0].substring(strs[0].indexOf(","));
Date d2 = format.parse(strs[1].substring(0, strs[1].indexOf(",")));
gc.setTime(d2);
gc.add(Calendar.SECOND, this.timeSeekInSecunds);
strs[1] = format.format(gc.getTime())+strs[1].substring(strs[1].indexOf(","));
System.out.println("for = "+(strs[0].trim() +" --> "+ strs[1].trim()));
writer.println(strs[0].trim() +" --> "+ strs[1].trim());
continue;
}
}catch(NumberFormatException nfe){}
writer.println(line);
}
writer.close();
reader.close();
}
public static void main(String[] args) throws IOException, ParseException{
Main main = new Main();
main.getFile();
main.initOperation();
}
}
QQ dúvida só mandar…
Opa!! Valeu BrunoCarlo!! Só que não sei se é isso mesmo!! Olha só!! Eu to criando um programa no qual eu indicaria um arquivo por exe .rtf, esse arquivo teria alguma tags que eu irei inventar, onde tiver essas tags eu quero substituir por algum conteúdo que será pego de outro lugar, tipo um select em uma tabela!!
Ex:
Título
<:inicio:>
Uma imagem qualquer.jpg
<:conteudo:>
<:fim:>
Rodapé
Esse arquivo .rtf seria lido a ao ser encontrado a tag <:conteudo:>, ele iria substituir por algum conteúdo vinda do banco!! Tudo o que não tiver dentro dessas tags continua como está, ou seja, ele copia o resto do arquivo, incluindo sua formatação!!! Não sei se tem como fazer isso!!
Ola,
Então, do jeito que vc quer… só ler linha a linha, como eu tô fazendo no exemplo, verificando cada linha, no meu caso eu tenho um inteiro, mas no teu será as suas tags, se encontrar alguma faça algo, subistituindo o valor, como eu tô fazendo, eu no caso atrazo em dois segundos um tempo, mas na verdade eu substituo o valor inicial pelo que eu calculei… só vc fazer o mesmo, mas com os valores para as tags…
Claro que vc precisará estruturar melhor a rotina, com metodos para recuperar os valores do banco… talves para tratar cada tag, sei lá, depende da sua abordagem…
Opa!! Valeu! Vou ver se consigo fazer como tu falou! Qualquer coisa eu posto as minhas dúvidas!!
Abraço!!