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.
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();
}
}
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();
}
}
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”
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)