Ecrire ou lire un booléen dans un fichier

Yakurena Messages postés 32 Date d'inscription   Statut Membre -  
nico7382 Messages postés 287 Statut Membre -
Bonjour,
Je developpe en ce moment des pages JSP afin de créer un site Intranet, et j'ai besoin de stocker dans un fichier une valeur booléene afin d'activer(ou non) une fonctionnalité sur ce site.
J'ai donc réalisé le fichier suivant qui doit permettre d'activer ou désactiver cette fonctionnalité (par un choix dans des boutons radio) :

String catalinaHome = System.getProperty("catalina.base");
File f = new File(catalinaHome + "/webapps/conf/envoi_mail.txt");

if(!f.exists())
{ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
oos.writeBoolean(false);
oos.close();
}

if(request.getParameter("valid")!=null)
{ FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
boolean choix = Boolean.valueOf(request.getParameter("choix")).booleanValue();
out.println(choix);
oos.writeBoolean(choix);
oos.close();
out.println("L'envoi automatique d'un mail a bien ete ");
if(choix == true) out.println("active");
else if(choix == false) out.println("desactive");
out.println("<meta http-equiv=\"refresh\" content=\"2;url=Espace.jsp\">");
}

else if(request.getParameter("valid") == null)
{ out.println("<form action='envoiMailAutomatique.jsp'>");
// On récupère d'abord la valeur pour l'instant contenue dans le fichier de sauvegarde
// (Pour cocher un des boutons par défaut)
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
boolean bool = ois.readBoolean();
ois.close();
out.println(bool);
out.println("Voulez-vous activer ou désactiver l'envoi d'un mail automatique?<BR><BR>");
out.println("<input type='radio' name='choix' value='true'");
if(bool == true) out.println("checked");
out.println("> Activer");
out.println("<input type='radio' name='choix' value='false'");
if(bool == false) out.println("checked");
out.println("> Désactiver");
out.println("<BR><BR><input type='submit' value='Valider' class='edfbutton'>");
out.println("<input type='hidden' name='valid'>");
out.println("</form>");

Mais quand je charge la page,ça me met une erreur de type EOFException (fin de fichier,comme s'il n'y avait rien à lire dans le fichier). C'est bizarre,car si le fichier existe déjà,un booléen y est forcément stocké,et s'il n'existe pas,il est automatiquement crée avec la valeur "false" qui y est inserée par défaut. Je ne comprends donc pas comment il peut ne rien y'avoir à lire.
Si qqn pouvait me donner la source du problème...
Merci d'avance.
A voir également:

1 réponse

nico7382 Messages postés 287 Statut Membre 50
 
Salut,
Je n'ai pas lu ton code. Mais si tu ecris seulement un booléen, il est possible qu'il prenne les 4 premier octets, alors qu'il n'y a que 1 bit. Un booléen s'écrit sur 1 bit alors que les caractères classique sur beaucoup plus=>EOF

Je pense que en gardant le meme code mais en ecrivant "oui" && "non", cela devrai passer.

Mais si tu veux garder le booléen pour optimiser le code, il doit etre possible de pouvoir lire le fichier en binaire et non en texte.
(en C, la différence est possible)
0