Saturday, April 27, 2013

Converting a text file to HTML

We are going to write a simple program to convert a plain text file to HTML. To make life simpler, the program will assume the input file is a.txt and the output file is a.html. We will use Reader.java and Writer.java written previously. You may have a look at them first:

Defining the Problem

Before writing the program, we would try to do a manual conversion first. This help us understand what should be implemented. The program will read the content of a.txt in memory, do the conversion, and then write the content to a.html. Sample input and output follows.

Sample input file: a.txt



class A
{
  public static void main(String[] args)
  {
    int b=10;    
    for (int i=0;i<b;i++)
      System.out.println("Hello World !\nHello again !");
  }
}


Sample output file: a.html



<html><body><pre style='font-family:monospace;font-size:12px'><code>
class A
{
  public static void main(String[] args)
  {
    int b=10;    
    for (int i=0;i&lt;b;i++)
      System.out.println(&quot;Hello World !\nHello again !&quot;);
  }
}
</code></pre></body></html>

Implementation Steps

1. Read the whole file a.txt into a String 2. Escape all special characters. That is :
  Replace & with &amp;
  Replace < with &lt;
  Replace > with &gt;
  Replace " with &quot;
3. Surround the content with appropriate HTML tags. 4. Write the content to a.html Note that overwrite mode is turned off by default. If you wish to overwrite existing file, modify Writer.java

Source

The above steps lead to the following simple implementation.

Saturday, April 20, 2013

Write a String to file

This is the reverse operation of Reading whole file into a String.

There are more than one ways of doing this. We may use FileWriter or FileOutputStream to achieve the purpose. The following sample wraps a FileWriter with a PrintWriter to print a String to the file.


Since this is only a demonstration and I don't want to do anything destructive, the program will NOT overwrite any existing file. You may turn on the overwrite mode following the comment below.