Aug 31, 2017

Creating A Simple Text Formatter Program in Java

import java.io.*;
import java.util.*;
/**
* Fmt -format text (like Berkeley Unix fmt).
*/
public class Fmt {
/** The maximum column width */
public static final int COLWIDTH=72;
/** The file that we read and format */
BufferedReader in;
/** If files present, format each, else format the standard input.
*/
public static void main(String[] av) throws IOException {
if (av.length == 0)
new Fmt(System.in).format( );
else for (int i=0; i<av.length; i++)
new Fmt(av[i]).format( );
}
/** Construct a Formatter given a filename */
public Fmt(String fname) throws IOException {
in = new BufferedReader(new FileReader(fname));
}
/** Construct a Formatter given an open Stream */
public Fmt(InputStream file) throws IOException {
in = new BufferedReader(new InputStreamReader(file));
}
/** Format the File contained in a constructed Fmt object */
public void format( ) throws IOException {
String w,f;
int col = 0;
while ((w = in.readLine( )) != null) {
if (w.length( ) == 0) { // null line
System.out.print("\n"); // end current line
if (col>0) {
System.out.print("\n"); // output blank line
col = 0;
}
continue;
}
// otherwise it's text, so format it.
StringTokenizer st = new StringTokenizer(w);
while (st.hasMoreTokens( )) {
f = st.nextToken( );
if (col + f.length( ) > COLWIDTH)

{

System.out.print("\n");
col = 0;
}
System.out.print(f + " ");
col += f.length( ) + 1;
}
}
if (col>0) System.out.print("\n");
in.close( );
}
}

0 comments:

Post a Comment