1

J'utilise Properties objet avec et FileOutputStream() méthode pour lire/écrire des propriétés de/dans .properties fichier java.Dans le fichier java `.properties` ne montre rien en mode d'édition

Son fonctionnement parfait (je suis capable d'écrire et de lire aussi bien) Mais quand j'ouvre le fichier .properties dans l'éditeur il n'y montre rien. C'est déroutant si je suis capable de lire et d'écrire alors pourquoi les valeurs ne sont pas affichées dans ce fichier?

Voici le code complet

String username = uName.getText().trim(); 
String pass = uPass.getText().trim(); 

// Read properties file. 
    Properties pro = new Properties(); 
    try { 
     pro.load(new FileInputStream("conf.properties")); 
     pro.setProperty("user", username); 
     pro.setProperty("pass", pass); 
     pro.store(new FileOutputStream("conf.properties"), null); 

     String user = pro.getProperty("user"); 
     System.out.println(user); 
     System.out.println("successful ......."); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
+2

Je suppose que le fichier que vous regardez dans l'éditeur est pas celui que vous utilisez pour économiser/chargement. Gardez à l'esprit que votre code utilise un nom de fichier relatif au répertoire de travail actuel de votre programme ... –

+0

exécutez-vous votre programme depuis un IDE? lequel? –

+0

@TimothyTruckle oui dans Netbeans –

Répondre

0

Les fichiers ne sont pas rincée jusqu'à ce que vous les fermer.

Vous devez modifier votre code pour inclure l'appel à la méthode .close() sur le flux d'entrée de fichier et fermer également le flux de sortie, car la méthode emmène un appel à .flush() mais pas à fermer, de sorte que votre système de fichiers ne sera pas vous montrer les changements:

String username = uName.getText().trim(); 
String pass = uPass.getText().trim(); 

// Read properties file. 
Properties pro = new Properties(); 
try { 

    final FileInputStream fileInputStream = new FileInputStream("conf.properties"); 
    pro.load(new FileInputStream("conf.properties")); 
    fileInputStream.close(); 
    pro.setProperty("user", username); 
    pro.setProperty("pass", pass); 
    String user = pro.getProperty("user"); 
    System.out.println(user); 

    final FileOutputStream fileOutputStream = new FileOutputStream("conf.properties"); 
    pro.store(fileOutputStream, null); 
    fileOutputStream.close(); 
    System.out.println("successful ......."); 

} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

Il vous suffit d'écrire le code qui extrait les propriétés dans le format que vous souhaitez les stocker. Cela devrait faire l'affaire. (Je l'ai codé directement ici, désolé s'il y a une erreur)

RÉDACTION: Je viens codé, il fonctionne:

public static void main(String[] args) { 
    String username = "bla"; 
    String pass = "blabla"; 

    // Read properties file. 
    Properties pro = new Properties(); 
    try { 
     File file = new File("/tmp/conf.properties"); 
     file.createNewFile(); 
     final FileInputStream fileInputStream = new FileInputStream(file); 
     pro.load(fileInputStream); 
     fileInputStream.close(); 
     pro.setProperty("user", username); 
     pro.setProperty("pass", pass); 
     String user = pro.getProperty("user"); 
     System.out.println(user); 

     File toClose = new File("/tmp/conf.properties"); 
     final FileOutputStream fileOutputStream = new FileOutputStream(toClose); 
     pro.store(fileOutputStream, null); 
     fileOutputStream.close(); 

     System.out.println("successful ......."); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 

C'est la sortie:

cat /tmp/conf.properties 
#Sun Nov 20 18:23:58 CET 2016 
user=bla 
pass=blabla 

Peut-être que la problème réside dans un autre endroit? essayez de le compiler, l'emballage et en cours d'exécution, puis dans le terminal (java jar ...)

+0

c'est toujours la même chose. –

+1

Vérifiez mon edditing;) –

+0

votre code fonctionne Mais il n'y a toujours rien dans le fichier de propriétés en mode d'édition. –

-2

setProperty simplement met à jour l'ensemble des propriétés, il n'écrit pas le fichier. Vous devez appeler la méthode store (OutputStream out, String header) pour réellement écrire le fichier sur le disque, et c'est le moment où vous devrez "verrouiller" le fichier.

départ accepté réponse this link

+1

OP appelle le magasin –