• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Jordao

[Resolvido]Temporizador e determinar extensão de ficheiro.

4 mensagens neste tópico

Boas,

é assim, gostaria de saber uma forma de criar um temporizador para que de x em x segundos o programa execute uma acção qualquer como por exemplo um print.

Não sei como fazer isso, nem sei se é preciso perceber alguma coisa de processos ou threads.

Gostaria também de saber como faço para saber a extensão de um tipo de ficheiro. Com a classe File é possivel? É que não estou a conseguir...

Obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para o temporizador, da uma olhada nas classes Timer e TimerTask.

O q tens de fazer é criar uma classe do tipo Timer e usar o método schedule e la passares como parametro o TimerTask q definiste..

Verifica na API como usar.

Sim, na realidade isto são threads...

Quanto á duvida do ficheiro, atraves da classe File, podes aceder ao nome do ficheiro. Por ai, usas por exemplo o método:

File f = new File("asa.cds");
	System.out.println(f.getName().substring(f.getName().indexOf('.')));/*

A única coisa q faz é retornar a parte referente à extensaõ do ficheiro.

Podes tornar isto melhor, por exemplo para aceitar ficheiros com "." no proprio nome  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende do que queres...

Se não te importas que o teu programa bloqueie nos intervalos em que nao esta a executar nada a maneira mais simples e mesmo:

while(true){

// O teu codigo aqui

try{

Thread.sleep(1000); // o tempo que queres que espere entre execucoes em milisegundos

} catch (InterruptedException e){ e.printStackTrace();}

}

Se quiseres que o teu programa continue a funcionar e que as tarefas periodicas sejam executadas por tras

ou crias a tua propria classe que extende thread ou entao usas as classes Timer e TimerTask que o Devilishly disse.

Em relacao aos ficheiros depreendo que o teu objectivo seria por exemplo quais seriam as extensoes para ficheiros de texto ou assim nao? Que eu saiba na versao base (sem libs) nao existe nenhuma API para saber quais as extensoes dos tipos de ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui fica uma solução mais robusta para retirar a extensao do ficheiro:

import java.io.File;

public class ParsePathname {
    
    public ParsePathname() { }
    
    public static void main(String[] args) throws Exception {
       File f = new File("c:/program files/adobe/Acrobat 5.0/Reader/acrord32.exe");
       System.out.println("dir : " + f.getParent());
       System.out.println("file : " + f.getName());
       System.out.println("ext : " + getFileExtension(f.getName())); 
       System.out.println("url : " + f.toURL());         
       System.out.println("uri : " + f.toURI()); 
       /*
          output :
          dir : c:\program files\adobe\Acrobat 5.0\Reader
          file : acrord32.exe
          ext : exe
          url : file:/c:/program files/adobe/Acrobat 5.0/Reader/acrord32.exe
          uri : file:/c:/program%20files/adobe/Acrobat%205.0/Reader/acrord32.exe
        */
    }
    
    public static String getFileExtension(String f) {
        String ext = "";
        int i = f.lastIndexOf('.');
        if (i > 0 &&  i < f.length() - 1) {
            ext = f.substring(i+1).toLowerCase();
        }
        return ext;
    }
}

link: http://www.rgagnon.com/javadetails/java-0514.html

Pesquisa no google: http://www.google.pt/search?q=getFileextension+%22.java%22&hl=pt-PT&lr=&start=10&sa=N

É preferivel criar uma classe q implemente a interface Runnable e dp criar uma Thread q chama essa(par a usar o temporizador). Basicamente é isso o q faz a classe Timer de uma forma mais robusta..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora