Dúvida - Iniciar e Parar movientação de Arquivos

9 respostas
Weslley

[color=darkblue]
Opa…

Saudações…

Irei desenvolver uma aplicação onde cuida da parte de movimentação de arquivos de um diretório para vários outros…
Esta aplicação varrerá o diretório a cada 5 ou 10 segundos para pegar o arquivo e jogar em outro diretório
Esta aplicação não será Web… mas ficará em um servidor de arquivos startado 24 horas…

Gostaria de saber como faço um controle onde posso iniciar e parar na hora desejada…

Desde já… agradeço…
[/color]

9 Respostas

wagner_a_lima

Você poderia utilizar o agendador de tarefas do windows ou o cron do linux, assim seu aplicativo não fica utilizando recursos do servidor desnecessariamente.

É só uma sugestão…

Weslley

[color=darkblue]Na verdade não é o Sistema Operacional que irá parar ou iniciar esta aplicação… terá uma interface gráfica com dois botoes Iniciar e Parar, e um campo informando os arquivos que estão sendo movimentados. Apenas isto…

A parte de movimentar os arquivos eu já sei como fazer… o problema é fazer como o metodo pode varrer a pasta periodicamente, mesmo que não haja arquivo na mesma…

desde já… Valeu pela sugestão…

Sds…[/color]

Matheus_Leandro_Ferr

Então,
você pode criar uma Thread para este tipo de controle.

Fique em looping até esta thread ser interrompida, verificando se existe o arquivo em determinada pasta.. etc.. etc...

Exemplo:

//
// Recebe a instancia da thread arquivo.
//
Thread
io_th_arquivo	=	new ThreadArquiv();

//
// Inicia a thread.
//
io_th_arquivo.start();


/**
 * Criando uma thread.
 */
private final
Thread			ThreadArquivo()
{
     	return
       	(
       		new Thread
       		(
       			new Runnable()
       			{
       				public
       				void			run()
       				{
					//
					// Faz um looping até a thread ser interrompida.
					//
		
						//
						// Verifica se existe o arquivo na pasta.
						//

							//
							// Faz o processamento necessário quando encontrar o arquivo
							//

						//
						// Caso não exista o arquivo..	
						// Notifica a thread fazendo verificar se existe o arquivo novamente.
						//
				}
			}
		)
	);
}

Né?!

Porém programar com thread é necessário ter um certo conhecimento! mas se você quer fazer de forma correta, tem que utiliza-la.

=)

Weslley

é… ae vc me pegou… =)

Não me aprofundei muito na questão de Threads… a não ser usando o metodo sleep()… hehhehheh…

Mas vou dar uma olhada…

Valeu pela ajuda…

Saudações…

Matheus_Leandro_Ferr

Usar thread e aprender a usa-la, é lindo igual a cerveja.

Weslley

[color=darkblue]mas ae… até ae deu pra entender…

mas e como fazer a interrupção da Thread ??[/color]

Matheus_Leandro_Ferr

Bom,

Para notifica-la, você deve utilizar um bloco syncronized na sua thread

// // Bloco syncronized para notificar a thread. // synchronized (io_th_arquivo) { io_th_arquivo.notify(); }

Já para interrompe-la, basta usar io_th_arquivo.interrupt();

Obs: Editei pois tinha falado uma coisa desnecessaria!

fantomas

Dá uma olhada no componente Quartz: http://hotwork.sourceforge.net/hotwork/manual/quartz/quartz-user-guide.html

Tem também o componente Timer que faz parte da api Java e é bem mais simples de utilizar, vale a pena verificar.

flws

Matheus_Leandro_Ferr

O problema de usar uma Timer é: Uma vez morta, sempre morta!

Pode ser dificil de acontecer, mas quando o java faz acontecer! já era =)

Criado 2 de abril de 2009
Ultima resposta 2 de abr. de 2009
Respostas 9
Participantes 4