/Users/petercappello/NetBeansProjects/56-2014/56-2014-FileIO/src/TextFileProcessor.java |
import java.awt.Component;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.zip.DataFormatException;
import javax.swing.JFileChooser;
A text file read/write utility that
reads lines processed by a Processor and
writes lines produced by a Processor.
@author
public class TextFileProcessor
{
private final Component parent;
Constructs a TextFileProcessor.
@param parent
public TextFileProcessor( Component parent ){ this.parent = parent; }
Read a text file, passing each line to a Processor.
@param processor
@throws
@throws
public void readFile( Processor processor ) throws IOException, DataFormatException
{
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog( parent );
if ( returnValue == JFileChooser.APPROVE_OPTION )
{
File readFile = fileChooser.getSelectedFile();
try ( BufferedReader reader = new BufferedReader( new FileReader( readFile.getCanonicalPath() ) ) )
{
for ( String line; ( line = reader.readLine() ) != null; )
{
processor.processInputLine( line );
}
}
}
}
Write a text file from lines produced by a Processor.
@param processor
@throws
public void writeFile( Processor processor ) throws IOException
{
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showSaveDialog( parent );
if ( returnValue == JFileChooser.APPROVE_OPTION )
{
File writeFile = fileChooser.getSelectedFile();
try ( Writer writer = new BufferedWriter( new FileWriter( writeFile.getCanonicalPath() ) ) )
{
processor.processOutputLines( writer );
}
}
}
}