Duvida expressão regular

15 respostas
H

Olá pessoal, tenho uma nova duvida sobre expressao regular é o seguinte:

Eu tenho um programa que vai gerar tal arquivo, eu preciso renomear este arquivo, mas o nome dele nunca vai ser gerado com o mesmo, para eu poder aponta-lo e renomear. Exemplo: O arquivo pode vim com o nome nome_aquivo_10.rtf, nome_arquivo_23.rtf e assim por diante. Não tem uma ordem.
Então pensei na forma de colocar uma expressão regular depois do “nome_arquivo_ … .rtf”, mas ñ sei como criar isso.Alguem pode me ajudar, por favor???

Agradeço, =D

15 Respostas

E

nome_arquivo_10.rtf
nome_arquivo_23.rtf

É sempre um número? Se for, use

nome_arquivo_[color=red][0-9]+[/color].rtf

H

Sim sempre um numero, vou testar isso aqui.

Obrigada enantiomero :smiley:

H

:frowning: ñ funcionou ñ galera.
O que exatamente esse [0-9]+. vai fazer dentro do meu arquivo.
Alguem pode me ajudar, por favor :s

ajfilho

Mostre o seu código para vermos como fez, e assim poder ajudá-la!

Abraços!

H

Este é o meu código:

public void renomearArquivo() {
		File arquivo = new File("c:\certidao[0-9]+\.rtf");
		File arquivoRenomeado = new File("c:\arquivoRenomeado.rtf");
		int tempoLimite = 0;
		boolean foiRenomeado = false;
		while(!foiRenomeado && (tempoLimite++) <= 60)
		foiRenomeado = arquivo.renameTo(arquivoRenomeado);

		if (arquivo.exists()) {
			throw new excessaoArquivoProdesp("Arquivo não foi renomeado");
		}
	}
H

Pessoal,
me ajude por favor =/

H

Oi Pessoal, eu fiz o seguinte código

File pasta = new File("c:\tmp"); File arquivos[] = pasta.listFiles(); File novo = new File("c:\tmp\renomeado.rtf"); for(int i=0; i < arquivos.length; i++) { if(arquivos[i].getName().equals("certidao20.rtf".trim())) { arquivos[i].renameTo(novo); } }

Preciso colocar uma expressão regular no nome do arquivo que quero renomear, pois nunca sei o nome dele. Ele pode vim como “certidao50.rtf”, “certidao15.rft”.

Como posso fazer isso, pessoal??

E

Dona Helen, você quer fazer o equivalente àquele comando do DOS “dir *.rtf” ? (Por exemplo)

Então você pode usar uma outra versão do método listFiles que você usou. Dê uma olhadinha no meu exemplo.

import java.util.regex.Pattern;
import java.util.Arrays;
import java.util.List;
import java.io.File;
import java.io.FileFilter;

class ListaArquivosExpressaoRegular {
    public ListaArquivosExpressaoRegular() {
    }
    public List<File> listarArquivos (String nomeDiretorio, String expressaoRegular) {
        final Pattern pat = Pattern.compile (expressaoRegular, Pattern.CASE_INSENSITIVE);
        return Arrays.asList (new File (nomeDiretorio).listFiles (
            new FileFilter() {
                public boolean accept (File pathname) {
                    return !pathname.isDirectory() &&
                        pat.matcher (pathname.getName()).matches();
                }
            }
        ));
    }
    public static void main (String[] args) {
        ListaArquivosExpressaoRegular lear = new ListaArquivosExpressaoRegular();
        List<File> arquivos = lear.listarArquivos ("c:\temp", ".*\.rtf");
        for (File f : arquivos) {
            System.out.println (f);
        }
    }
}
H

Obrigada pela ajuda, mas tentei rodar o seu codigo pra entender e deu erro. =/

E

Você tem um diretório c:\temp na sua máquina? Se não tiver vai dar erro mesmo.

felipehand

Poderia postar o erro?

H

Sim eu tenho esse diretorio na minha maquina. Eu meio que resolvi o problema que estava tendo da seguinte forma:

File pasta = new File("c:\tmp"); File arquivos[] = pasta.listFiles(); File novo = new File("c:\tmp\renomeado.rtf"); for (int i = 0; i < arquivos.length; i++) { if (arquivos[i].getName().toString().substring(0, 8).equals("certidao")) { arquivos[i].renameTo(novo); } }

Mais estou com mais um problema rs :oops:
Antes de eu renomear o meu arquivo, eu tenho que verificar dentro do meu diretorio se tem algum arquivo existente com a substring(0, 8 ).equals(“certidao”), se existir eu deletar ele.
Como faço isso pessoal?

Obrigada pela ajuda desde já :slight_smile:

H

Ahe pessoal :smiley: não precisa responder essa não analisei melhor e eu já resolvi :stuck_out_tongue: Obrigada

E

Amiga, por favor, leia a documentação. O nome do método é “exists” na classe java.io.File:

http://java.sun.com/javase/6/docs/api/java/io/File.html

Se tiver problemas com a língua inglesa, use o tradutor do Google. Ele não é perfeito mas quebra o galho.

http://www.google.com.br/language_tools?hl=pt-BR

H

Obrigada novamente, resolvido o problema!!!

Criado 10 de setembro de 2009
Ultima resposta 11 de set. de 2009
Respostas 15
Participantes 4