Java - нужна помощь для улучшения кода

Я написал простую программу для чтения содержимого из текстового файла / файла журнала в 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);

  }
}

Я думал об улучшении моей программы, и путаница в том, что я должен использовать Карты или файл свойств для хранения строки поиска. Я искал подход, чтобы избежать использования метода подстроки (с помощью индекса строки). Любые предложения действительно ценятся.

1 ответ

Сверху вниз:

  • Не используйте импорт подстановочных знаков.
  • Не используйте пакет по умолчанию
  • реструктурируйте ваш метод readFile в более мелкие методы
  • Используйте новый файловый API Java 7 для чтения файлов
  • Попробуйте использовать try-блок с ресурсом (ваш файл)
  • Я бы не стал непрерывно писать в файл, напиши в конце
  • Не поймать генерала Exception
  • Используйте последний блок для закрытия ресурсов (или блок try, упомянутый ранее)

И вообще: не создавайте HTML, добавляя строки, это плохой шаблон сам по себе. Но хорошо, кажется, что ты хочешь делать.

редактировать

О, еще один: ваш текстовый файл содержит некоторые данные, верно? Если ваши данные представляют некоторые объекты (или объекты), было бы хорошо создать POJO для этого. Я думаю, что ваш текстовый файл содержит пользователей (верно?). Затем создайте класс с именем Users и проанализировать текстовый файл, чтобы получить список всех пользователей в нем. Что-то вроде:

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

После этого у вас есть хороший user объект и весь ваш уродливый разбор находится в одной центральной точке.

Другие вопросы по тегам