-1

我编写了一个简单的程序来读取文本/日志文件中的内容到带有条件格式的 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);

  }
}

我正在考虑增强我的程序,但困惑是我应该使用地图还是属性文件来存储搜索字符串。我正在寻找一种避免使用子字符串方法(使用行索引)的方法。任何建议都非常感谢。

4

1 回答 1

0

从上到下:

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

总的来说:不要通过附加字符串来创建 HTML,这本身就是一种糟糕的模式。不过好吧,看来这就是你想要做的。

编辑

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

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

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

于 2014-05-07T07:50:44.147 回答