title: logic help for creating csv files from plain text file
body: <p>Actually I had a .rtf file and from that I was trying to create a csv file. While searching I saw that I have convert it into plain text and then to csv file. But right now I am kind of stuck with logic. I am not getting idea what to apply to move forward.</p>
  
  <p>I have below data which I want to convert to csv.</p>
  
  <p>Input :</p>
  
  <pre><code>Search Target Redmond40_MAS  Log Written 01/18/2013 9:13:19 Number of attempts 1
  Search Target Redmond41_MAS  Log Written 01/19/2013 9:15:16 Number of attempts 0
  </code></pre>
  
  <p>Output :</p>
  
  <pre><code>Search Target,Log Written,Number of attempts
  Redmond40_MAS,01/18/2013 9:13:19,1
  Redmond41_MAS,01/19/2013 9:15:16,0
  </code></pre>
  
  <p>If there was any delimiter then I would have done it but in this case I know are the "keys" i.e. header values but not getting the idea how to extract corresponding contents.</p>
  
  <p>Any suggestion will help.</p>
  
  <pre><code>import java.io.*;
  import javax.swing.text.BadLocationException;
  import javax.swing.text.Document;
  import javax.swing.text.rtf.RTFEditorKit;
  
  public class Rtf2Csv {
  
      public static void main(String[] args) {
          RTFEditorKit rtf = new RTFEditorKit();
          Document document = rtf.createDefaultDocument();
          try {
              FileInputStream fi = new FileInputStream("test.rtf");
              rtf.read(fi, document, 0);
          } catch (FileNotFoundException e) {
              System.out.println("File not found");
          } catch (IOException e) {
              System.out.println("I/O error");
          } catch (BadLocationException e) {
          }
          String output = "Search Target,Log Written,Number of attempts";
          try {
              String text = document.getText(0, document.getLength());
              text = text.replace('\n', ' ').trim();
              String[] textHeaders = text
                      .split("===================================================================================");
  
              String[] header = { "Search Target", "Log Written",
                      "Number of attempts"};
              System.out.println(textHeaders.length);
              int headLen = header.length;
              int textLen = textHeaders.length;
              for (int i = 0; i &lt; textLen; i++) {
                  String finalString = "";
                  String partString = textHeaders[i];
                  for (int j = 0; j &lt; headLen; j++) {
                      int len = header[j].length();
                      if (j + 1 &lt; header.length)
                          finalString += partString.substring(
                                  partString.indexOf(header[j]) + len,
                                  partString.indexOf(header[j + 1])).trim()
                                  + ",";
                      else
                          finalString += partString.substring(
                                  partString.indexOf(header[j]) + len).trim();
                  }
                  output += "\n" + finalString;
              }
          } catch (BadLocationException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          try {
              FileWriter writer = new FileWriter("output.csv");
              writer.append(output);
              writer.flush();
              writer.close();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
      }
  
  }
  </code></pre>
  
  <p>I have written this code. Is there any better way to improve it?</p>