Files

Aí Galera,

Estou desenvolvendo uma app que pega os novos ficheiros de uma pasta, e os arquiva noutra pasta, só que estou tendo algumas dificuldades.
Eu peguei o cod. q encontrei na net

import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Untitled1 {

public Untitled1() {
}

public static void main(String[] args) {

File dir = new File("C:\testeTemp");
File[] files = dir.listFiles();

Timer timer = new Timer();
timer.schedule(new RemindTask(files), 1000, 1000);
}
}
class RemindTask extends TimerTask {

File[] lst = null;

public RemindTask(File[] lstFiles) {

lst = lstFiles;
}

public void run() {

File dir = new File("C:\testeTemp");
File[] files = dir.listFiles();

if (lst.length == files.length)
System.out.println("Same files!");
else {
            try {
                System.out.println("New file!");
                lst = files;
            } catch (IOException ex) {
                Logger.getLogger(RemindTask.class.getName()).log(Level.SEVERE, null, ex);
            }
}

dir = null;
files = null;
}
}

Este cod. funciona direitinho, só não consigo pegar o nome dos novos files.

Será que alguém pode dar uma mãozinha?

Vlw
//Graveyard

para vc ver todos os arquivos de uma pasta vc tem q fazer um for no listFiles:

for (File file : new File("C:\testeTemp").listFiles()) { System.out.println(file.getName() + " : " + file.getAbsolutePath()); }

Viva,

Não era bem isso que eu queria saber, até porque o listFiles(), eu já estou utilizando no meu cod. (linha 17), o problema era saber qual o novo ficheiro colocado na pasta.
Se reparar ai estão dois arrays (files e lst), eu resolvi meu problema da seguinte forma:


if (lst.length == files.length)
            System.out.println("Same files!");
        else
        {
            System.out.println("New file!");
            //Declaro dois ArrayList auxiliares
            ArrayList auxFiles = new ArrayList();
            ArrayList auxLst = new ArrayList();
            //Jogo os dados do array files no ArrayList auxFiles
            for(int i = 0;i<files.length;i++)
                auxFiles.add(files[i]);
           //Jogo os dados do array lst no ArrayList auxLst
            for(int i = 0;i<lst.length;i++)
                auxLst.add(lst[i]);
            //Verifico se o auxList que guarda a lista antiga, contém os elementos da lista nova, quando não encontrar determinado elemento imprime
            for(int i=0;i<auxFiles.size();i++)
                if(auxLst.contains(auxFiles.get(i))==false)
                    auxName = ((File)auxFiles.get(i)).getName();
            System.out.println("New file is: "+auxName);
            lst = files;
        }

Só que isto ainda não faz o que eu quero, porque isto só funciona se colocar um file de cada de vez na pasta, porém se colocar vários files ao mesmo tempo ele só imprime o último dos que lá são colocados.

Será que alguem tem alguma dica que me possa dar?
Vlw
//Graveyard

Eu não entendi bem o q vc queria, mas acho que é isso:

for(int i = 0;i<lst.length;i++) auxLst.add(lst[i]); //Verifico se o auxList que guarda a lista antiga, contém os elementos da lista nova, quando não encontrar determinado elemento imprime for(int i=0;i<auxFiles.size();i++) { if(auxLst.contains(auxFiles.get(i))==false) { auxName = ((File)auxFiles.get(i)).getName(); System.out.println("New file is: "+auxName); } } lst = files; }