elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Leer fichero de configuracion mediante java.util.properties
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Leer fichero de configuracion mediante java.util.properties  (Leído 14,851 veces)
alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Leer fichero de configuracion mediante java.util.properties
« en: 11 Abril 2010, 23:58 pm »

Hola a todos,

estoy teniendo problemas para acceder a los values de un properties mediante una clase que sigue el patron Singleton...

La clase es la siguiente:

Código
  1. public class ApplicationDirectories {
  2.  
  3.    static private ApplicationDirectories singleton = new ApplicationDirectories();
  4.  
  5.    Properties prop = new Properties();
  6.  
  7.    public ApplicationDirectories() {
  8.  
  9.    }
  10.    /**
  11.      * Default constructor
  12.      */
  13.    public ApplicationDirectories(File configFile) {
  14.  
  15.  
  16.        InputStream is = null;
  17.  
  18.        try {
  19.          System.out.println(configFile.getPath());
  20.          is=new FileInputStream(configFile.getPath());
  21.          prop.load(is);
  22.        } catch(IOException ioe) {}
  23.  
  24.  
  25.  
  26.    } //end RepositoryManagement()
  27.  
  28.    /**
  29.      * **GETTERS**
  30.      */
  31.  
  32.    /**
  33.      * Returns the singleton attribute which is used to access the methods of this class from other packages
  34.      * @return  a RepositoryManagement object
  35.      */
  36.  
  37.    static public ApplicationDirectories getSingleton() {
  38.         return singleton;
  39.     }
  40.  
  41.    public Properties getProperties(){
  42.        return prop;
  43.    }
  44.  
  45.    /**
  46.      * **SETTERS**
  47.      */
  48.  
  49.    public void setProperties(Properties prope){
  50.        this.prop=prope;
  51.    }
  52.  
  53.  
  54. }
  55.  
  56.  

Cuando arranca la aplicacion quiero cargar el fichero de configuracion, pero cuando intento recuperar una de las propiedades me da como null, el codigo que empleo es el siguiente:

Código
  1. File configFile = new File (System.getProperty("user.home").concat(pathSeparator + ".Jsignalworkbench" + pathSeparator + "Config" + pathSeparator + "config.txt"));
  2. ApplicationDirectories app = new ApplicationDirectories(configFile);
  3. System.out.println(prope.getProperty("defaultRemotePath"));
  4.  

Tambien he probado las siguientes dos lineas de codigo y ambas me devuelven null:

Código
  1. System.out.println(global.ApplicationDirectories.getSingleton().getProperties().containsKey("defaultRemotePath"));
  2.        System.out.println(global.ApplicationDirectories.getSingleton().getProperties().containsValue("defaultRemotePath"));
  3.  


Si pruebo los accesos a properties sin la clase con el patron Singleton si que me devuelve los valores correctos contenidos en el fichero de configuracion, por lo tanto deduzco que el error viene de la clase ApplicationDirectories....

Alguien me puede hechar una mano en corregir el error que tiene la clase???

Espero vuestras respuestas y gracias de antemano.

alzehimer_cerebral



En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #1 en: 12 Abril 2010, 03:01 am »

En esta línea:

Código:
System.out.println(prope.getProperty("defaultRemotePath"));

De donde sacas el objeto "prope"??

Un saludo


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #2 en: 12 Abril 2010, 18:22 pm »

En esta línea:

Código:
System.out.println(prope.getProperty("defaultRemotePath"));

De donde sacas el objeto "prope"??

Un saludo


Código
  1. Properties prop = new Properties();

Esta declarado como variable de instancia, creo...

Saludos
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #3 en: 12 Abril 2010, 21:02 pm »

Haber al final la clase ha quedado asi:

Código
  1. public class ApplicationDirectories {
  2.  
  3.    static private ApplicationDirectories singleton = new ApplicationDirectories();
  4.  
  5.    Properties prop = new Properties();
  6.  
  7.    public ApplicationDirectories() {
  8.  
  9.    }
  10.  
  11.    public void crearApplicationDirectories(File configFile) {
  12.  
  13.  
  14.        InputStream is = null;
  15.  
  16.        try {
  17.          System.out.println(configFile.getPath());
  18.          is=new FileInputStream(configFile.getPath());
  19.          prop.load(is);
  20.        } catch(IOException ioe) {}
  21.  
  22.  
  23.  
  24.    } //end RepositoryManagement()
  25.  
  26.    /**
  27.      * **GETTERS**
  28.      */
  29.  
  30.    /**
  31.      * Returns the singleton attribute which is used to access the methods of this class from other packages
  32.      * @return  a RepositoryManagement object
  33.      */
  34.  
  35.    static public ApplicationDirectories getSingleton() {
  36.         return singleton;
  37.     }
  38.  
  39.    public Properties getProperties(){
  40.        return prop;
  41.    }
  42.  
  43.    /**
  44.      * **SETTERS**
  45.      */
  46.  
  47.    public void setProperties(Properties prope){
  48.        this.prop=prope;
  49.    }
  50.  
  51.  
  52. }
  53.  
  54.  

Y al inicio del programa hago lo siguiente:

Código
  1. String pathSeparator = System.getProperty("file.separator");
  2.  
  3.  
  4.        File configDir = new File(System.getProperty("user.home").concat(pathSeparator + ".Jsignalworkbench" + pathSeparator + "Config"));
  5.        File configFile = new File (System.getProperty("user.home").concat(pathSeparator + ".Jsignalworkbench" + pathSeparator + "Config" + pathSeparator + "config.txt"));
  6.        File appDir = new File (System.getProperty("user.home").concat(pathSeparator + ".Jsignalworkbench"));
  7.  
  8.        if(configFile.exists()){
  9.            global.ApplicationDirectories.getSingleton().crearApplicationDirectories(configFile);
  10.        }
  11.  
  12.        else{
  13.            if(!appDir.exists()){
  14.                //File aux = new File(global.ApplicationDirectories.getSingleton().getProperties().getProperty("appDir"));
  15.                //global.ApplicationDirectories.getSingleton().ApplicationDirectories(configFile);
  16.  
  17.                //if (!aux.exists()){
  18.                //File dir = new File(System.getProperty("user.home").concat(pathSeparator + ".Jsignalworkbench"));
  19.                if(!appDir.mkdir()){
  20.                    JOptionPane.showMessageDialog(null, "Error in the creation of a directory needed for the program to run","Error", JOptionPane.ERROR_MESSAGE);
  21.                    System.exit(-1);
  22.  
  23.                }
  24.            }
  25.  
  26.            if(!configDir.exists()){
  27.                if(!configDir.mkdir()){
  28.                    JOptionPane.showMessageDialog(null, "Error in the creation of a directory needed for the program to run 1","Error", JOptionPane.ERROR_MESSAGE);
  29.                    System.exit(-1);
  30.  
  31.                }
  32.  
  33.  
  34.                //Creation of the configFile file
  35.  
  36.                try {
  37.                // A partir del objeto File creamos el fichero físicamente
  38.                if (!configFile.createNewFile()){
  39.                    JOptionPane.showMessageDialog(null, "Error in the creation of a file needed for the program to run","Error", JOptionPane.ERROR_MESSAGE);
  40.                    System.exit(-1);
  41.                }
  42.                else
  43.                    System.out.println("Fichero de configuracion creado correctamente");
  44.  
  45.                } catch (IOException ioe) {
  46.                    ioe.printStackTrace();
  47.                }
  48.                System.out.println("fichero de config creado");
  49.                System.out.println(configFile.getPath());
  50.                //Write configFile data to the configFile file
  51.                BufferedWriter bw = new BufferedWriter(new FileWriter(configFile.getPath()));
  52.  
  53.                String lineSeparator = System.getProperty("line.separator");
  54.  
  55.                bw.write("***CONFIG FILE***" + lineSeparator);
  56.  
  57.                String homeDir = System.getProperty("user.home");
  58.                //bw.write("homeDir =" + homeDir + lineSeparator);
  59.  
  60.                //String tmpDir = System.getProperty("java.io.tmpdir");
  61.                //bw.write("tmpDir =" + tmpDir + lineSeparator);
  62.  
  63.                String defaultRepositoriesPath = homeDir + pathSeparator + ".Jsignalworkbench" + pathSeparator + "Repositories";
  64.                bw.write("defaultRepositoriesPath =" + defaultRepositoriesPath + lineSeparator);
  65.  
  66.                String defaultRemotePath = "http://arregla-tu-pc.no-ip.biz/pruebas_proyecto/gasuco.xml";
  67.                bw.write("defaultRemotePath =" + defaultRemotePath + lineSeparator);
  68.  
  69.                //String appDir = homeDir + pathSeparator + ".Jsignalworkbench";
  70.                //bw.write("appDir =" + appDir + lineSeparator);
  71.  
  72.                String localPlugins = appDir + pathSeparator +  "Local_plugins";
  73.                bw.write("localPlugins =" + localPlugins + lineSeparator);
  74.  
  75.                bw.close();
  76.  
  77.                global.ApplicationDirectories.getSingleton().crearApplicationDirectories(configFile);
  78.            }
  79.        }
  80.  
  81.             System.out.println(global.ApplicationDirectories.getSingleton().getProperties().size());
  82.             System.out.println(global.ApplicationDirectories.getSingleton().getProperties().getProperty("localPlugins"));
  83.  
  84.            File repoDir = new File(global.ApplicationDirectories.getSingleton().getProperties().getProperty("defaultRepositoriesPath"));
  85.            if(!repoDir.exists()){
  86.                System.out.println("No esxiste defaultRep path");
  87.                if(!repoDir.mkdir()){
  88.                    JOptionPane.showMessageDialog(null, "Error in the creation of a directory needed for the program to run","Error", JOptionPane.ERROR_MESSAGE);
  89.                    System.exit(-1);
  90.  
  91.                }
  92.            }
  93.  
  94.            File plugDir = new File(global.ApplicationDirectories.getSingleton().getProperties().getProperty("localPlugins"));
  95.            if(!plugDir.exists()){
  96.                if(!plugDir.mkdir()){
  97.                    JOptionPane.showMessageDialog(null, "Error in the creation of a directory needed for the program to run","Error", JOptionPane.ERROR_MESSAGE);
  98.                    System.exit(-1);
  99.  
  100.                }
  101.            }
  102.  
  103. }        
  104.  
  105.  


El problema viene que cuando saco por pantalla
Código
  1. System.out.println(global.ApplicationDirectories.getSingleton().getProperties().getProperty("localPlugins"));
me sale sin los separadores de path, es decir asi: C:Usersgasuco.JsignalworkbenchLocal_plugins....

Si miro dentro del fichero si que sale con las \.  Que esta pasando???

Salu2

alzehimer_cerebral
En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Perikles

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #4 en: 12 Abril 2010, 23:25 pm »

veo que estas en un entorno windows.

El caracter '\' s un carácter de escape y por lo tanto espera otro carácter después de este.

¿Puedes probar a cambiar en el fichero properties la propiedad localPlugins lo que tengas con este caracter '\' aeste otro '/' o poner '\\'?

Un saludo.
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #5 en: 13 Abril 2010, 00:24 am »

Okis lo puedo cambiar pero no en toda la cadena, me explico:

Código
  1. String homeDir = System.getProperty("user.home");
  2. String defaultRepositoriesPath = homeDir + pathSeparator + pathSeparator + ".Jsignalworkbench" + pathSeparator + pathSeparator + "Repositories";
  3.  
  4.  

Puedo meter dos pathSeparator, pero como meto dos \ en el SystemProperty("user.home")...

Al sacar por pantalla
Código
  1.             System.out.println(global.ApplicationDirectories.getSingleton().getProperties().getProperty("defaultRepositoriesPath"));
  2.  
  3.  

Se queda asi: C:Usersgasuco\.Jsignalworkbench\Repositories

Tendria que haber otra \ despues de Users...

La cuestion es que antes de hacer esta implementacion estuve jugando con los metodos de la clase Propeties y esto no me pasaba, y tampoco usaba dos pathSeparator a la hora de crear el fichero...

Alguna sugerencia???

Salu2

alzehimer_cerebral
En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Perikles

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #6 en: 13 Abril 2010, 00:54 am »

Mira esto que acabo de hacer:


String base = System.getProperty("user.home");
File c = new File (base);
File d = new File (c,"pruebas/hola.txt");
System.out.println(d.getAbsolutePath());
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #7 en: 13 Abril 2010, 01:29 am »

El problema es que al guardar de esa forma al igual que la mia lo guarda en el fichero perfectamente, pero a la hora de recuperar dicho path no coge las \..., por lo tanto eso no va a resolver el problema.  Recuerda que el problema es al leer no al escribir, por lo tanto creo que en el fichero la ruta deberia tener \\ como separador de directorios.  Lo que no se es como meterle el \\ en el user.home...

Quien me ayuda, necesito urgentemente resolver esto para poder seguir con el programa.  Gracias por la colaboracion.

alzehimer_cerebral
En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Perikles

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #8 en: 13 Abril 2010, 01:54 am »

String s = System.getProperty("user.home");
s = s.replace("\\", "/");

Trabaja con la barra del 7 (/), es mucho mejor
En línea

alzehimer_cerebral


Desconectado Desconectado

Mensajes: 513



Ver Perfil WWW
Re: Leer fichero de configuracion mediante java.util.properties
« Respuesta #9 en: 13 Abril 2010, 11:40 am »

Código
  1. String defaultRepositoriesPath = homeDir + pathSeparator + pathSeparator + ".Jsignalworkbench" + pathSeparator + pathSeparator + "Repositories";
  2.                defaultRepositoriesPath = defaultRepositoriesPath.replace("\","\\");
  3.  

No puedo trabajar con / ya que toda la aplicacion trabaja con \....

A la hora de hacer el replace me salta:
illegla character \92
unclosed string literal

Help please  :P

alzehimer_cerebral
En línea

Servicios Informaticos Valencia - www.ag-solutions.es
Mi blog - www.alvarogarciasolano.com
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
que es mejor facil y mas util php o java ?¿
Programación General
Freelancer 2 5,818 Último mensaje 8 Junio 2011, 05:32 am
por Freelancer
[Aporte] ....::: Clase Arrays del paquete java.util :::...
Java
horny3 0 4,114 Último mensaje 24 Septiembre 2012, 06:43 am
por horny3
Problema con java.util.ConcurrentModificationException
Java
rubenasis 1 1,825 Último mensaje 14 Mayo 2015, 17:31 pm
por kub0x
Ayuda con biblioteca que lee un fichero de configuracion
Programación C/C++
snake_linux 6 3,438 Último mensaje 21 Agosto 2015, 23:14 pm
por snake_linux
Java util cannot be resolved
Java
n-utz 3 3,546 Último mensaje 5 Enero 2018, 16:30 pm
por Ram6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines