Comment sauver & lire des paramètres dans un fichier?

Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011 - 8 juin 2004 à 13:24
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 9 juin 2004 à 19:08
Salut à tous,

(Voila un question supplémentaire sur le forum, c'est normal, je débute donc j'interroge plus que je réponds).

:question) Voici ma question:
j'ai un petit programme qui tourne (en JAVA bien sûr :big) ) pas trop mal et j'aimerais sauvegarder des données importantes en cas de coupure de courant. Ces infos seraient du genre; adresse du serveur, nom de mon instance de programme, un long offset etc... Bien sûr la liste peut s'agrandir.

Je voudrais donc faire un fichier texte que j'interroge au démarrage et que je modifie de temps en temps, dans ce style:
IP_server : 144.20.18.24
offset : 12248763442
etc...
Existe-t-il des 'trucs' (truc = fonction ou méthode :clown) ) qui permettent de lire et d'écrire facilement des données dans un fichier.
J'ai entendu parler des classes serializable mais je sais comment ça marche. %-6

Merci.
:kisses)
Signé: Egalon qui comprend difficilement

9 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
8 juin 2004 à 15:17
Tu fais une classe

public Data implements Serializable{
private String host;
//etc etc

public data(){
}

public String getHost(){
return host;
}

public void setHost(String host){
this.host=host;
}

//etc etc
}

Apres t'utilises par

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File(mmonfichier)));

ois.writeObject(data);

et

ObjectInputStream ois=new ObjectInputStream(new FileInputStream(new File(mmonfichier)));

Data data=ois.readObject();

Dans data le constructeur par defaut doit toujours etre present

Le fichier ne sera pas un fichier texte

Si tu fait une modif sur la classe Data tu pourra plus lire t'es ancien fichier.
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
8 juin 2004 à 16:53
Merci pour cette réponse nette et précise.
:) Je dois donc tout me taper à la main pour obtenir un fichier texte?

J'ai déjà commencé un truc qui lit la chaine de caractère suivante dans un fichier texte. L'écriture dans le fichier, ce sera pour demain matin.

Je m'explique au cas ou ce serait pas clair:

fichier texte (qui sert de test):
gluglu truc
machin chose 
bidule


et ma classe permet de récuperer le 2eme élément:

la fonction Read(machin) renvoie chose
et Read(bidule) renvoie un espace.
On peut ainsi transformer la chaine renvoyée dans le type que je veux.

OU
un exemple plus utile:

adresse_server 192.168.0.4
port_server 4500
offset 1234775
un_nom_bidon toto


et je récupère une info:
Server = InetAddress.getByName(monFichier.Read(adresse_server ));


Tu crois que ca peux intéresser d'autres personnes? Je dois publier ma 1ère source?

Merci encore ;)

Signé: Egalon qui comprend difficilement
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 juin 2004 à 17:33
GodConan :clown)

ben tu peu aussi utiliser les class Properties et Pref ;o)
qui possede des methode d archivage

;o) tu peu meme te servir de la registry de l OS pour sauver t data.... ;o)

++
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
8 juin 2004 à 18:31
Ben euh.... :shy)
Je connais pas c'est quoi ça :question) :question) :question)
Ca sauvegarde des données meme si il y a plus de courant?
Ca marche comme des fichiers'On peut y accèder en dehors du programme?
Pour la base de registre, oublie j'en ai pas. Je bosse sur un module style PC/104, alors, y a pas d'OS.

Tu peux m'en dire plus?
Merci

Signé: Egalon qui comprend difficilement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
8 juin 2004 à 22:31
Salut,

les Properties serait le meilleur moyen pour ce que tu cherches.
Un fichier property (*.properties) est un fichier normalisé de la forme suivante :
adresse_server = 192.168.0.4
port_server = 4500
offset =1234775
un_nom_bidon = toto

On a des informations (après le =) identifiées par une clé (avant le =). La classe java.util.Property permet de lire un tel fichier. Ensuite on peut récupérer les infos en donnant la clé souhaitée.

Pour la lecture
Property property =new Property();
property.load(new FileInputStream("fichier.properties"));
String ipServer=property.getProperty("adresse_server");


Pour l'écriture

property.store(new FileInputStream("fichier.properties"),null);
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 juin 2004 à 23:08
GodConan :clown)

a la place de "fichier.properties" ;o) use plusto this.getClass().getName() + ".properties" ;o)

++
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
9 juin 2004 à 10:15
Ca a l'air super votre truc.
8-)
C'est juste que je viens de finir de m'emmer... :(
à tout ecrire avec de String et des positions dans les fichiers.
Je crois que votre soluce est certainement moins lourde à mettre en oeuvre.
Donc je vais de ce pas essayer.

Merci les gars.
;)
Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
9 juin 2004 à 10:50
Trop bien et en plus ça marche bien. 8-)
(J'ai pas essayé avec une valeur qui contiendrait un '\n', mais sûr que ca planterait bien.)

(Kirua12, t'as fait deux petites erreurs pour l'écriture c'est
outputStream (c'est évident) et les property se déclarent en properties, mais c'est pas grave j'avais trouvé tout de suite. ;) )

Pis si un jour ça intéresserait quelqu'un d'autre, voici mon code: :shy)

public class testProperty {
        
public static void main(String[] aArg) 
    {try{	Properties property =new Properties(); //creation d'un objet des correspondances clé <=> valeur
property.load(new FileInputStream("fichier.properties")); // on charge ces correspondances à partir d'un fichier
property.setProperty("adresse_server","cornichons à la mayonnaise.");
//on modifie ce qu'on veut.
property.store(new FileOutputStream("fichier.properties"),null);
// on sauvegarde le TOUT dans le fichier.
property.load(new FileInputStream("fichier.properties"));
//on charge le fichier quand on en a besoin.
String ipServer=property.getProperty("adresse_server");
//on lit la correspondance avec une clé.
System.out.println(ipServer);
//on en fait ce qu'on en veut.
}catch(Throwable err){System.out.println("Ca a merdé!");};
}// et si ca plantait???
}


Merci encore (Pour kirua12: je compte même plus les coups de pouce que tu m'as donné).

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
9 juin 2004 à 19:08
c'était pour voir si tu suivais :big)
0
Rejoignez-nous