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;
}