-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ブロックを使用してみてください
  • ファイルに連続して書き込むのではなく、最後に書き込みます
  • 将軍を捕まえないでくださいException
  • 最終ブロックを使用してリソースを閉じます (または前述の try ブロック)

一般に、文字列を追加して HTML を作成しないでください。これは、それ自体が悪いパターンです。でもまあ、やりたいことはあるようです。

編集

もう 1 つ: テキスト ファイルには何らかのデータが含まれていますよね? データがいくつかのエンティティ (またはオブジェクト) を表す場合、そのために POJO を作成するとよいでしょう。あなたのテキスト ファイルにはユーザーが含まれていると思います (そうですか?)。次に、というクラスを作成しUsers、テキスト ファイルを解析して、ファイル内のすべてのユーザーのリストを取得します。何かのようなもの:

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

その後、素敵なuserオブジェクトが得られ、醜い解析はすべて 1 つの中心点にあります。

于 2014-05-07T07:50:44.147 に答える