J'essaie de créer une page JavaServer qui lit deux fichiers texte (dev.txt et BLTversion.txt) et permet à l'utilisateur de leur écrire pour mettre à jour leur contenu. Seul problème à chaque fois que l'utilisateur essaie de mettre à jour BLTversion.txt il supprime le contenu des fichiers ... Donc je suppose qu'il ya quelque chose de mal avec la partie d'écriture? Je vais continuer à essayer d'obtenir cela, mais j'ai juste pensé que je l'afficherais au cas où quelqu'un pourrait voir où je me trompe avant de le comprendre. Voici le code:Le lecteur/enregistreur JSP ne fonctionne pas correctement
<%
ArrayList list = new ArrayList();
ArrayList list2 = new ArrayList();
String line1 = "";
String line2 = "";
boolean error = false;
String errorString = "";
String original = request.getParameter("original");
String code = request.getParameter("code");
String prod = request.getParameter("prod");
String versions = request.getParameter("versions");
String engineer = request.getParameter("engineer");
String assignee = request.getParameter("assignee");
line1 = prod + "," + code + "," + engineer.toUpperCase() + "," + assignee.toUpperCase() + "," + versions;
line2 = code + " " + versions + ",";
if(code.matches("(?i),* ,*")){
errorString = errorString + "Your product code contains a space and is not valid <br />";
error = true;
}
if(versions.matches("(?i),* ,*")){
errorString = errorString + "Your versions contains a space and are not valid <br />";
error = true;
}
if(engineer.equals("")){
errorString = errorString + "Please enter an Engineer<br />";
error = true;
}
if(assignee.equals("")){
errorString = errorString + "Please enter an Assignee<br />";
error = true;
}
File f = new File(Properties + seperator + "dev.txt");
File f2 = new File(Properties + seperator + "BLTversion.txt");
if (error){
out.println(errorString);
}
else{
try{
FileInputStream fstream = new FileInputStream(f);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
String[] langs = strLine.split(",");
if (!langs[1].equals(original)){
list.add(strLine);
}
}
br.close();
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
if (error){
out.println(errorString);
}
else{
list.add(line1);
Collections.sort(list);
try{
Writer update = new BufferedWriter(new FileWriter(f));
for (int i = 0; i < list.size(); i++) {
if (i == (list.size() - 1)){
update.write((String) list.get(i));
}
else{
update.write((String) list.get(i) + newLineChar);
}
}
update.close();
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
out.println("Your Product was not correctly processed, Please try again");
}
}
try{
FileInputStream fstream2 = new FileInputStream(f2);
DataInputStream in2 = new DataInputStream(fstream2);
BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
String strLine2;
while ((strLine2 = br2.readLine()) != null) {
String[] langs = strLine2.split("\\s");
if (!langs[1].equals(original)){
list2.add(strLine2);
}
}
br2.close();
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
if (error){
out.println(errorString);
}
else{
list2.add(line2);
Collections.sort(list2);
try{
Writer update2 = new BufferedWriter(new FileWriter(f2));
for (int i = 0; i < list.size(); i++) {
if (i == (list2.size() - 1)){
update2.write((String) list2.get(i));
}
else{
update2.write((String) list2.get(i) + newLineChar);
}
}
update2.close();
}
catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
out.println("Your Product was not correctly processed, Please try again");
}
}
}
%>
1) Avoir le code java dans JSP n'est pas la meilleure pratique. 2) quel est le problème? avez-vous des erreurs? – kosa
@thinksteep le problème est qu'au lieu d'écrire dans le fichier BLTversion.txt (voir le fichier f2 juste avant la première instruction try) pour le mettre à jour, il supprime simplement tout son contenu et le laisse comme un fichier texte vide. Pas d'erreur vu qu'il n'y a rien de syntaxiquement erroné juste en supposant que quelque chose ne va pas dans la logique de la partie où il écrit dans le fichier BLTversion.txt. –
Notez que l'écriture dans le système de fichiers rend votre fournisseur d'applications Web dépendant, car vous allez à l'extérieur de ce que la garantie de l'API servlet fonctionne, –