Manter código em execução ---- URGENTE

Boa Tarde

Gostaria que me ajudassem…

Eu tenho um código que lê ficheiros de uma pasta e insere os dados numa base de dados, assim que o ficheiro é lido este é eliminado da pasta. A questão é a seguinte, esta pasta está constantemente a ser actualizada com novos ficheiros, e que eu pretendia era que assim que entrasse um novo ficheiro na pasta o código fosse novamente executado, fiz-me entender??

Obrigada

Faz um código que lê de tempos em tempos a pasta…

Você pode usar um Timer pra agendar essa tarefa de maneira bem tranquila… Dá uma olhada nesse link:
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/timer.html

E como coloco ele a ver a pasta por exemplo de 2 em 2 minutos???

Eu já tentei utilizar o Thread.sleep(120000), mas não está fazendo nada… :? só se tenho o código errado, mas também não está dando erro…

Obrigada

[quote=anamilagaia]E como coloco ele a ver a pasta por exemplo de 2 em 2 minutos???

Eu já tentei utilizar o Thread.sleep(120000), mas não está fazendo nada… :? só se tenho o código errado, mas também não está dando erro…

Obrigada[/quote]

poste o código que você tem que o pessoal ai te mostra onde você está errando…

um palpite seria que você não esta colocando isso num loop… você tem que colocar o que tiver para executar e depois o sleep dentro de um loop infinito…

Você não precisa criar uma Thread diretamente, pode usar o Timer como falei anteriormente.

package msi;
    	    
import java.awt.Toolkit;
import java.io.*;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.sql.Driver;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Open extends Thread
{
	Toolkit toolkit;
	Timer timer;

   public static void lerficheiro(){
	
	  ArrayList<String> a= new ArrayList <String>();
	   String linha = null;   
	   
   try {  
	   File f = new File("C:/msi"); 
	      File[] lista = f.listFiles(); 
	        
	      for(File arquivo : lista) {  
	       //System.out.println(arquivo.getAbsolutePath());  
	           
	          // if (arquivo.length() > 1000)
	           //	arquivo.delete();
	           
	           FileReader reader = new FileReader(arquivo);  
	             BufferedReader leitor = new BufferedReader(reader);  
	       
	      
	            while ((linha = leitor.readLine()) != null) {  
	            	 StringTokenizer st;  
	               st = new StringTokenizer(linha, "\t");   
	                   
	                   String t = "<CR>";
	                   
		         Pattern p = Pattern.compile(t);  
		         Matcher m = p.matcher(linha); 
		           
		         while (m.find()) {  
		        	String x = arquivo.getPath();
		            System.out.println("" + x);  
		            System.out.println(m.group());
                 
                            BufferedReader rd = new BufferedReader(new FileReader(x));
                            LineNumberReader lineNumberReader = new LineNumberReader(rd);
                        
                            String id = null;
                            String nome = null;
                            String prim = null;
                            String ult = null;
                            String dn = null;
                            String ano = null;
                            String mes = null;
                            String dia = null;
                            String fimdn = null;
                            String fimdt = null;
                            String fimt = null;
                            int sex = 0;
                            String nr = null;
                            String sala = null;
                            String mod = null;
                            String sd = null;
                            String dat = null;
                            String tim = null;
                            String hora = null;
                            String min = null;
                            String seg = null;
                            Date data = null;
                            
                                         Pattern pattern = Pattern.compile("(.+) <([^>]+)>");  
                                         String line;  
                                         while ((line = lineNumberReader.readLine()) != null) {  
                                             Matcher matcher = pattern.matcher(line);  
                                             if (matcher.matches()) {  
                                                
												String chave = matcher.group(1); //lê a 1ª coluna
                                                 System.out.println(chave);
                                                 String valor = matcher.group(2); //lê a 2ª coluna
                                                 System.out.println(valor);
                                                
                                               
                                                 if (chave.equals("PATIENT_ID")) {  
                                                	                         id = valor;
                                               	                     
                                                	                      } else if (chave.equals("PATIENT_NAME")) {  
                                                	                          nome = valor;  
                                                	                          int cont = nome.split(" ").length;
                                                	                          String s[] = nome.split("\ "); 
                                                	                          prim = s[0];  
                                                	                          ult = s[cont-1];
                                                	         	              System.out.println(ult);  
                                                	         	              
                                                	                      } else if (chave.equals("PATIENT_BIRTH_DATE")) {  
                                                	                          dn = valor; 
                                                	                          char[] letras = dn.toCharArray(); 
                                                	                          char primeira = dn.charAt(0); 
                                                	                          char segunda = dn.charAt(1);
                                                	                          char terceira = dn.charAt(2);
                                                	                          char quarta = dn.charAt(3);
                                                	                          
                                                	                          char priseg = dn.charAt(4);
                                                	                          char segseg = dn.charAt(5);
                                                	                          
                                                	                          char priter = dn.charAt(6);
                                                	                          char segter = dn.charAt(7);
                                                	                          
                                                	                          ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
                                                	                          mes = (""+priseg+""+segseg+"");
                                                	                          dia = (""+priter+""+segter+"");
                                                	                          
                                                	                          fimdn = (""+dia+"-"+mes+"-"+ano+"");
                                                	                          
                                                	                          SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");  
                                                	                          data = new java.sql.Date(format.parse(fimdn).getTime());
                                                	                         
                                                	                          
                                                	                      } else if (chave.equals("PATIENT_SEX")){
                                                	                    	  
                                                	                    	  if (valor.equals("M")){
                                                	                    		  sex = 0;
                                                	                    	  }
                                                	                    	  else if (valor.equals("F")){
                                                	                    		  sex = 1;
                                                	                    	  }
                                                	                    	
                                                	                    	
                                                	                    	  System.out.println(sex);
                                                	                    	  
                                                	                      } else if (chave.equals("STUDY_ID")){
                                                	                    	  nr = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_RESOURCE")){
                                                	                    	  sala = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("MODALITY")){
                                                	                    	  mod = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("STUDY_DESCRIPTION")){
                                                	                    	  sd = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_START_DATE")){
                                                	                    	  dat = valor;
                                                	                    	  char[] letras = dat.toCharArray(); 
                                                	                          char primeira = dat.charAt(0); 
                                                	                          char segunda = dat.charAt(1);
                                                	                          char terceira = dat.charAt(2);
                                                	                          char quarta = dat.charAt(3);
                                                	                          
                                                	                          char priseg = dat.charAt(4);
                                                	                          char segseg = dat.charAt(5);
                                                	                          
                                                	                          char priter = dat.charAt(6);
                                                	                          char segter = dat.charAt(7);
                                                	                          
                                                	                          ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
                                                	                          mes = (""+priseg+""+segseg+"");
                                                	                          dia = (""+priter+""+segter+"");
                                                	                         
                                                	                          fimdt = (""+dia+"-"+mes+"-"+ano+"");
                                                	                    	
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_START_TIME")){
                                                	                          tim = valor;
                                                	                          
                                                	                          char[] letras = tim.toCharArray(); 
                                                	                          char primeira = tim.charAt(0); 
                                                	                          char segunda = tim.charAt(1);
                                                	                          
                                                	                          char priseg = tim.charAt(2);
                                                	                          char segseg = tim.charAt(3);
                                                	                          
                                                	                          char priter = tim.charAt(4);
                                                	                          char segter = tim.charAt(5);
                                                	                          
                                                	                          hora = (""+primeira+""+segunda+"");
                                                	                          min = (""+priseg+""+segseg+"");
                                                	                          seg = (""+priter+""+segter+"");
                                                	                          
                                                	                          fimt = (""+hora+":"+min+":"+seg+"");
                                                	                          
                                                	                      }    
                                                 
                                                       }//end if
                                             
                                             
                                        }  //end while
                                        
		         String caminho = "C:/Programas/PTW/DiaSoft/DataBase/user.mdb";
                 Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();  
                 Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + caminho);
                 
                 Statement stm = con.createStatement();
                
                ResultSet rs = stm.executeQuery ("SELECT Id FROM PatientData WHERE Id = '"+nr+"'");
             
				if (rs.next()){
					String resultado = rs.getString("Id");
					System.out.println(resultado);
			         
					Pattern p1 = Pattern.compile(resultado);
					Matcher m1 = p1.matcher(resultado);
					
					while(m1.find()){
			
						String aqui = arquivo.getAbsolutePath();
						System.out.println(aqui);
						arquivo.deleteOnExit();
						
						
						System.out.println("Apaguei ");
				
					} 
					
				}else{
					try{
				    // System.out.println(" INSERT INTO PatientData (Id, Surname, [First Name], [Date Of Birth], Sex, [Scheduled Study Resource], Modality, [Study Description], [Scheduled Study Start Date], [Scheduled Study Start Time] VALUES ('"+nr+"','"+ult+"','"+prim+"','"+fimdn+"',"+sex+",'"+sala+"','"+mod+"','"+sd+"','"+fimdt+"','"+fimt+"')");
					stm.executeUpdate(" INSERT INTO PatientData (Id, Surname, [First Name], [Date Of Birth], Sex, [Scheduled Study Resource], Modality, [Study Description], [Scheduled Study Start Date], [Scheduled Study Start Time]) VALUES ('"+nr+"','"+ult+"','"+prim+"','"+fimdn+"',"+sex+",'"+sala+"','"+mod+"','"+sd+"','"+fimdt+"','"+fimt+"')");
					Thread.sleep(120000);
				     System.out.println("inseri");
					}catch(InterruptedException e){
						e.printStackTrace();
					}
				}
					  con.close();
                      rd.close();  
                     
                 
		         } //end while
		      
	             } //end while
	            reader.close();
	        	
	   arquivo.delete();
	      } //end for
	     
		            	       
		      
	             mostrar(a);
	           
	          } catch (Exception e) {  //end try
	             e.printStackTrace();  
	          }  //end catch
	       }  //end lerficheiro
   
   
 


public static void mostrar(ArrayList <String> b)
   {
      for (int i=0; i<b.size(); i++)
      {
         System.out.println(b.get(i));   
         
   }
   }
  
public void run(){
	
		lerficheiro();
		try {
		
			Thread.sleep(120000);
			
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

   
public static void main(String[] args)
   {
      lerficheiro();
      
      }
	          
}

Desculpa a enormidade de código, mas é mais seguro não retirar nada… sim talvez seja isso, mas não percebo muito dessa matéria.

Obrigada

A apache em um pacote de utilidades commons para arquivos de todos os tipos :

http://commons.apache.org/vfs/index.html

Utilizando a filesystem :
http://commons.apache.org/vfs/apidocs/org/apache/commons/vfs/FileSystem.html

Voce pode adicionar um listernner ( para averiguar modificações do sistema de arquivos )
Provavelmente ele deve utilizar um agendamento por tempo de algum Thread para checar isso
contudo acredito que vale a pena , utilizar algo que foi feito e testado e que inda usa um conceito
mais elegante e apropriado ( o dos listeners) para este fim.