2012-07-10 1 views
0

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"); 
     } 
    } 
}  
    %> 
+0

1) Avoir le code java dans JSP n'est pas la meilleure pratique. 2) quel est le problème? avez-vous des erreurs? – kosa

+0

@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. –

+0

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, –

Répondre

Questions connexes