Parametro Externo

Ola pessoal,

Sou DBA e nao conheco muito de Java, estou precisando de ajuda para receber 2 parametros externos em uma classe, segue a classe:
Preciso passar para a classe o nome do arquivo e a data que sera utilizada abaixo.

[code]package datemodify;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ChangeFileLastModified
{
public static void main(String[] args)
{

	try{

		File file = new File("C:\\logfile.log"); // PRIMEIRO PARAMETRO EXTERNO 

		//print the original last modified date
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
		System.out.println("Original Last Modified Date : " 
				+ sdf.format(file.lastModified()));

		//set this date 
		String newLastModified = "01/01/2014 23:00:00"; // SEGUNDO PARAMETRO EXTERNO

            

		//need convert the above date to milliseconds in long value 
		Date newDate = sdf.parse(newLastModified);
		file.setLastModified(newDate.getTime());

		//print the latest last modified date
		System.out.println("Lastest Last Modified Date : " 
				+ sdf.format(file.lastModified()));

	}catch(ParseException e){

		e.printStackTrace();

	}

}

}[/code]

Qualquer ajuda 'e muito bem vinda!

Obrigado.

Novato… A classe possui um método main.

Em Java, o método main é a porta de entrada, o primeiro método a ser executado pela Thread principal da aplicação.

Já pensando em casos assim, esse método possui em sua assinatura um Array de Strings chamado args.

Logo, basta que quando você faça a chamada dessa sua classe para executar, você faça o seguinte:

java ChangeFileLastModified "C:\logfile.log" "01/01/2014 23:00:00"

Abs e bons estudos cara :wink:

Adriano, obrigado pelo retorno.

Pelo o que entendi, seria necessario declarar as variaveis e substituir conforme abaixo:

File file = new File( VARIAVEL1 ); // PRIMEIRO PARAMETRO EXTERNO 
String newLastModified = VARIAVEL2 ; // SEGUNDO PARAMETRO EXTERNO

Realizei varios testes e nao consegui finalizar essa classe vou ler mais sobre o assunto. Se tiver alguma dica de como fazer seria muito util.

Grato pelo sua atencao.

At.

Bom… Então veja bem… :slight_smile:

Se é assim, o que seu professor quer é que você tire essa lógica de dentro do método main. Como lhe disse, o método main é a porta de entrada deo seu Software de forma que você não deve (não estou nem certo se pode, acho que sim) chamá-lo explicitamente de nenhum canto da aplicação.

Logo, se você vai receber ambas as variáveis por parâmetros, escreva um método que receba essas variáveis e mude sua lógica pra dentro desse método. Para testes, você pode passar fixo no método main a chamada desse método, mas o ideal é que venha de uma GUI.

Por hora, faça o seguinte:


public static void main(String[] args) {
    recebeFileExibeData("C:\logfile.log","01/01/2014 23:00:00");
}

public static void recebeFileExibeData(String filePath, String lastModification)  {     
  
        try{  
  
            File file = new File(filePath); // PRIMEIRO PARAMETRO EXTERNO   
  
            //print the original last modified date  
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");  
            System.out.println("Original Last Modified Date : "   
                    + sdf.format(file.lastModified()));  
  
            //need convert the above date to milliseconds in long value   
            Date newDate = sdf.parse(lastModification);  // SEGUNDO PARAMETRO EXTERNO  
            file.setLastModified(newDate.getTime());  
  
            //print the latest last modified date  
            System.out.println("Lastest Last Modified Date : "   
                    + sdf.format(file.lastModified()));  
  
        }catch(ParseException e){  
  
            e.printStackTrace();  
  
        }  
  
} 

Era isso?

Abs e bons estudos :wink:

Para pegar o valor de um String array seria assim, por exemplo

A partir dessa chamada do programa java, com 2 parametros (essa chamada é feita pelo prompt de comando)
java ChangeFileLastModified “C:\logfile.log” “01/01/2014 23:00:00”

public static void main(String[] args) {  
    String param1 = args[0];
    String param2 = args[1];
    recebeFileExibeData(param1,param2);  
}  

Só tome cuidado com ArrayIndexOutOfBounds, caso tente pegar um valor do array que nao existe. Exemplo: caso vc passe 1 parametro só na sua chamada do programa, o erro ocorrerá ao tentar acessar o args[1] (na posição 1)

Adriano e Igor,

Obrigado pela atencao!!

Vou realizar os testes e informo o resultado.