Intro I’m a newbie in the Linux world but this dotfiles thing it’s AWESOME. So, as the law says, one must create a...
“Vending Machine” – 1 de ∞
Olá,
Ao conseguir decifrar o que vou fazer neste artigo só pelo titulo já está assumido que sabe o que estou a tratar. Caso não esteja a fazer sentido nenhum, então é favor de ler isto e tudo ficará mais claro sobre a razão destes artigos.
Com este tipo de artigos pretendo criar as linhas orientadoras para todos os que estão a fazer a cadeira de FP consigam fazer o projecto e como objectivo final, toda a turma passar à cadeira.
Foi abordado numa aula que o código fonte de dois programas que cumpram o mesmo objectivo pode ser diferente caso o seu programador mude, e neste caso não é diferente, a minha abordagem ao problema vai de certeza ser diferente de qualquer outra dos alunos da turma, por isso advirto que esta é uma forma de lá chegar e não é a única.
Agora feitas as introduções vamos por a mão na massa, eu já fiz parte do programa que nos foi pedido, já faz o arranque. Mas para chegar aqui tive de aprender a verificar se existe um ficheiro, criar um ficheiro, adicionar texto a um ficheiro sem perder o que já lá está e trabalhar com datas.
Para verificar se um ficheiro existe, existem algumas formas, mas a mais simples que encontrei foi a seguinte:
boolean flag=false; File f = new File(ficheiro); if(f.exists()) flag=true; else flag=false;
Isto tem truque, o ficheiro tem de estar localizado na raiz do projecto, mas para se saber em que directoria o JAVA está basta colocar isto no código para ele fazer impressão no ecrã dessa directoria:
String USER_DIR_KEY = "user.dir"; String currentDir = System.getProperty(USER_DIR_KEY); System.out.println("Directoria: " + currentDir);
Assim já se sabe onde ele vai verificar se existe o ficheiro. Para criar um ficheiro o processo é igualmente simples, ora vejamos:
try{ FileWriter fstream = new FileWriter("NOME.TXT"); BufferedWriter out = new BufferedWriter(fstream); fstream.close(); }catch (Exception e){ System.err.println("Erro: " + e.getMessage()); }
Incrementar dados num ficheiro, desde que ele exista, tem um conceito simples de perceber através do código:
File ficheiro = new File("NOME.TXT"); try { output = new BufferedWriter(new FileWriter(ficheiro,true)); output.write(texto + "\r\n"); output.close(); } catch (IOException e) { e.printStackTrace(); }
O \r\n não está ali por acaso, serve para fazer uma quebra de linha no ficheiro em causa e assim quando for escrever a próxima vez já será numa linha seguinte. Está a faltar conseguir trabalhar com datas e como em todo o código aqui apresentado, este é muito curto e simples:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); Date novaData= new Date(); String novaData= dateformat.format(novaData);
No fim a variável novaData já contem a data com o formato que se pretende, com estes conceitos e com o conceito de Função julgo que será simples chegar ao ponto de a máquina arrancar.
Espero que seja útil esta informação e que dentro em breve as Vending Machines dominem o mundo 🙂
Boas Pedro,
Sendo aluno de LEI, também tenho o mesmo trabalho que tu. No entanto, e após ler os teus pedaços de código, pergunto-me se existirá diferença em relação ao “path” do ficheiro caso o programa seja realizado num sistema operativo Windows ou num sistema tipo Unix.
Eu sei que a nível de PHP (que é mais a minha área), existe sempre o stress das \ (para windows) versus / (para unix).
Eu vou começar agora a realizar o meu trabalho por isso se me aparecerem mais situações estranhas coloco-as aqui 🙂
Abraços e bom trabalho