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 -
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.
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:
- Ecrire ou lire un booléen dans un fichier
- Lire un fichier epub - Guide
- Comment lire un fichier docx - Guide
- Comment ouvrir un fichier bin ? - Guide
- Lire un fichier .dat - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
1 réponse
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)
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)