2012-07-10 119 views
0

我想创建一个读取两个文本文件(dev.txt和BLTversion.txt)的JavaServer Page,并让用户写入它们以更新它们的内容。唯一的问题是任何时候用户试图更新BLTversion.txt它删除文件的内容...所以我认为写作部分有问题吗?我会继续试图去解决这个问题,但是只是想我会把它发布出来,以防万一在我弄清楚之前有人能够看到我要出错的地方。下面是代码:JSP读写器不能正常工作

<% 

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)具有在JSP中的Java代码是不是最好的做法。 2)是什么问题?你有什么错误吗? – kosa 2012-07-10 15:19:31

+0

@thinksteep问题是,不是写入BLTversion.txt文件(请参阅第一个try语句之前的文件f2)来更新它,它只是删除其所有内容并将其保留为空文本文件。没有任何错误出现,因为在写入BLTversion.txt文件的部分的逻辑中假设有错误,因此没有任何语法错误。 – 2012-07-10 15:27:41

+0

请注意,写入文件系统会使您的Web应用程序供应商依赖于您,因为您不在servlet API保证工作的范围之外, – 2012-07-10 15:28:36

回答