2014-05-07 98 views
-1

我編寫了一個簡單的程序,通過條件格式將文本/日誌文件中的內容讀取到html。Java - 需要幫助來增強代碼

以下是我的代碼。

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); 

    } 
} 

我想,以提高我的程序和混亂是任我應該使用地圖或屬性文件來存儲搜索字符串。我正在尋找一種避免使用子字符串方法的方法(使用一行的索引)。任何建議真正讚賞。

+2

我的建議是使用正則表達式。但說實話,如果代碼工作... –

+1

切勿使用DataInputStream來讀取文本。這是一個已被複制多次的破損圖案。 –

+0

一個建議(可能與你的問題無關),不要做通配符導入。指定需要的是更好的做法。 –

回答

0

從上到下:

  • 不要使用通配符進口。
  • 不要使用默認包
  • 重組更小的方法
  • 使用新的Java 7的文件API您READFILE方法來讀取文件
  • 嘗試使用try塊與資源(文件)
  • 我也不會持續寫入一個文件,它到底寫
  • 不要捕捉一般Exception
  • 使用最後一塊關閉資源(或try塊前面提到過)

而且一般情況下:不要通過附加字符串來創建HTML,這對於它自己來說是不好的模式。但是,好像,你想要做什麼。

編輯

哦,多了一個:你的文本文件包含一些數據吧?如果你的數據代表了一些實體(或對象),爲此創建一個POJO會很好。我認爲你的文本文件包含用戶(對吧?)。然後創建一個名爲Users的類並解析文本文件以獲取其中所有用戶的列表。喜歡的東西:

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

之後,你有一個很好的user對象和所有醜陋的解析是在一箇中心點。

+0

非常感謝您寶貴的建議,我能夠及時完成我的任務。我是初學者,我需要你們進一步支持任何其他問題。 –