Java - 需要帮助来增强代码

时间:2014-05-07 07:29:17

标签: java java-io text-to-html

我编写了一个简单的程序,使用条件格式将文本/日志文件中的内容读取到html。

以下是我的代码。

import java.io.*;
import java.util.*;
class TextToHtmlConversion {
public void readFile(String[] args) {
for (String textfile : args) {
try{
      //command line parameter
      BufferedReader br = new BufferedReader(new FileReader(textfile));
      String strLine;
      //Read File Line By Line
      while ((strLine = br.readLine()) != null)   {
      Date d = new Date(); 
      String dateWithoutTime = d.toString().substring(0, 10);
      String outputfile = new String("Test Report"+dateWithoutTime+".html");
      FileWriter filestream = new FileWriter(outputfile,true);
      BufferedWriter out = new BufferedWriter(filestream);
      out.write("<html>");
      out.write("<body>");
      out.write("<table width='500'>");
      out.write("<tr>");
      out.write("<td width='50%'>");
      if(strLine.startsWith(" CustomerName is ")){
            //System.out.println("value of String split Client is :"+strLine.substring(16));
            out.write(strLine.substring(16));
            }
        out.write("</td>");
        out.write("<td width='50%'>");
            if(strLine.startsWith(" Logged in users are ")){
                if(!strLine.substring(21).isEmpty()){
                    out.write("<textarea name='myTextBox' cols='5' rows='1' style='background-color:Red'>");
                    out.write("</textarea>");
                    }else{
                  System.out.println("else if block:");
                  out.write("<textarea name='myTextBox' cols='5' rows='1' style='background-color:Green'>");
                  out.write("</textarea>");
                } //closing else block
              //out.write("<br>");
        out.write("</td>");   
            }
        out.write("</td>");
        out.write("</tr>");
        out.write("</table>");
        out.write("</body>");
        out.write("</html>"); 
     out.close();
    }
    //Close the input stream
    in.close();
 }catch (Exception e){//Catch exception if any
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
      }
    }
}

 public static void main(String args[]) {
     TextToHtmlConversion myReader = new TextToHtmlConversion();
 String fileArray[] = {"D:/JavaTesting/test.log"};
 myReader.readFile(fileArray);

  }
}

我正在考虑增强我的程序,而且我应该使用Maps或属性文件来存储搜索字符串。我正在寻找一种方法来避免使用substring方法(使用一行的索引)。任何建议都是真的很感激。

1 个答案:

答案 0 :(得分:0)

从上到下:

  • 不要使用通配符导入。
  • 请勿使用默认包
  • 以更小的方法重构您的readFile方法
  • 使用新的Java 7文件API读取文件
  • 尝试对资源(您的文件)使用try-block
  • 我不会连续写入文件,最后写到
  • 不要抓住一般Exception
  • 使用最后一个块来关闭资源(或前面提到的try块)

总的来说:不要通过附加字符串来创建HTML,这对于它自己来说是一种糟糕的模式。但是,似乎你想做什么。

修改

哦,还有一个:你的文本文件包含一些数据吗?如果您的数据代表某些实体(或对象),那么最好为此创建一个POJO。我认为你的文本文件包含用户(对吗?)。然后创建一个名为Users的类并解析文本文件以获取其中所有用户的列表。类似的东西:

List<User> users = User.parse("your-file.txt");

之后你有一个很好的user对象,所有丑陋的解析都在一个中心点。