Arquivos Temporários

4 respostas
P

Olá Guj,

Estou implementado um programinha de autenticação de usuários, o programa começa com o usuário digitando login e senha, em uma Class
que utiliza Swing, ao apertar o botão OK a Class com Swing instância a Class UserTmpFile que com o método setUsuarioAtual cria um arquivo temporário e grava o login do usuário que está acessando o programa. Até aí funcionou, o problema é que eu tenho uma terceira Class que verifica quem é o usuário que está logado e tenho que instânciar a Class UserTmpFile para acessar o método getUsuarioAtual, e quando eu faço essa instância eu perco a referência do arquivo temporário onde está gravada a informação que eu preciso, gerando um erro NullPointerException.

Abaixo segue a UserTmpFile:

import java.io.*;
public class UserTmpFile{
    private File tmpUser;
    private String usuarioAtual;
    /** Creates a new instance of UserTmpFile */
    public UserTmpFile() {
    }
    public void setUsuarioAtual(String usuario){
        try{
            tmpUser = File.createTempFile("tempo",".tmp");
            BufferedWriter bufWrtr = new BufferedWriter(new FileWriter(tmpUser));
            bufWrtr.write(usuario);
            bufWrtr.close();
            tmpUser.deleteOnExit();
        }catch(FileNotFoundException e){
            System.out.println(e);
        }catch(IOException e){
            System.out.println(e);
        }
        usuarioAtual = usuario;
    }
  
 public String getUsuarioAtual(){
        try{
            BufferedReader bufRdr = new BufferedReader(new FileReader(tmpUser));
            usuarioAtual = bufRdr.readLine();
            bufRdr.close();
        }catch(IOException e){
            System.out.println(e);
        }
        System.out.println(usuarioAtual);
        return usuarioAtual;
    }
    
}

4 Respostas

P

outras para fazer essa autenticação e consulta será bem vinda.

p5f8

Bom dia pmuniz,

Cara, “estou” com o java a 4 meses… espero que esse relacionamento dure para sempre… hauahau
Bem, no seu caso eu não gravaria a informação do usuário logado em arquivo, eu utilizaria uma variável de classe, ou seja, onde está:

private String tmpUser;

eu faria assim:

private static String tmpUser;

e como, geralmente, o nome do usuário e/ou nível do usuário no sistema nós utilizamos muito, eu utilizaria a Design Pattern Singleton(acho que se escreve assim).
bem, vai ai o seu código que provavelmente eu utilizaria:

public class UserTmpFile {
    static private String usuarioAtual;
    static private UserTmpFile instancia = null;

    /** Creates a new instance of UserTmpFile */
    private UserTmpFile() {
     }
 
    public static UserTmpFile getInstance() {
         if (instancia == null) {
             instancia = new UserTmpFile();
        }
        return instancia;
    }
    
    public void setUsuarioAtual(String usuario){           
        usuarioAtual = usuario;
    }
  
    public String getUsuarioAtual(){
        return usuarioAtual;
    }
   
}

cara… não testei esse código pq na máquina que estou agora não tenho o jsdk instalado, assim que chegar em casa eu testo e faço as devidas correções…

P

Valeu obrigado!!!
Consegui deixar com o arquivo temporário, sem perder a referência usando getInstance(). Vou precisar do arquivo para gravar mais informações no futuro.

p5f8

legal, só para você ver como eu faria…
Criaria uma tabela no banco de dados contendo as informações dos usuários, p.e. nome do usuário, senha, data de último acesso, hora de último acesso e talz, então faria uma classe para eles, e quando o camarada loga-se eu instanciaria um objeto dessa classe, daria um select na tabela, usando DAO, e deixaria tudo em memória, para facilitar o acesso as informações que, com certeza, utilizarei em algum outro ponto no sistema.

mais ou menos assim:

public class Usuario {
           static private String usuario;
           static private String usuario;
           static private int nivel;
           static private Date dataDeUltimoAcesso;
           
          // ** aqui teria mais informações que você desejar
         // ** aqui teria os métodos getters e setters
         
          public boolean isExist() {
                  return (new UsuarioDao(usuario,senha).isExist());
          }
    }

    public class UserTmpFile {
    static private Usuario usuarioAtual;
    static private UserTmpFile instancia = null;

    /** Creates a new instance of UserTmpFile */
    private UserTmpFile() {
     }
 
    public static UserTmpFile getInstance() {
         if (instancia == null) {
             instancia = new UserTmpFile();
        }
        return instancia;
    }
    
    public void setUsuarioAtual(String usuario,String senha){           
        usuarioAtual = new Usuario(usuario,senha);
    }
  
    public String getUsuarioAtual(){
        return usuarioAtual.getUsuario();
    }
   
}
Criado 31 de janeiro de 2005
Ultima resposta 2 de fev. de 2005
Respostas 4
Participantes 2