Professional Documents
Culture Documents
Java Io v1.2 Workshop Solutions
Java Io v1.2 Workshop Solutions
Solutions to
Workshops
Java I/O: Solutions to Workshops Page i
Contents
Lesson 2:
Using Text Streams
// TextFileReaderWriter.java
package mycode;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;
import java.util.Iterator;
if (args.length < 1) {
tfrw.info(
"{Input File Name} [{output File Name}] [{name of serialized
vector}]");
return;
}
inputFileName = args[0];
vec = tfrw.readTextFile(inputFileName);
if (vec == null) {
return;
}
tfrw.printLines(vec);
} else {
outputFileName = args[1];
tfrw.info("Writing file " + outputFileName);
tfrw.writeTextFile(outputFileName, vec);
}
//------------------------------------------------
// Read input from text file
//------------------------------------------------
public Vector readTextFile(String inputFileName) {
try {
Vector vec = new Vector();
FileReader fr = new FileReader(inputFileName);
BufferedReader br = new BufferedReader(fr);
//------------------------------------------------
// Print to standard output
//------------------------------------------------
public void printLines(Vector vec) {
Iterator iter = vec.iterator();
while (iter.hasNext()) {
System.out.println((String) iter.next());
}
}
//------------------------------------------------
// Write to a text file
//------------------------------------------------
public void writeTextFile(String outputFileName, Vector vec) {
try {
FileWriter fw = new FileWriter(outputFileName);
PrintWriter pw = new PrintWriter(fw);
Iterator iter = vec.iterator();
while (iter.hasNext()) {
pw.println((String) iter.next());
}
pw.close();
} catch (Exception e) {
info("Exception in writeTextFile():");
info(e.getClass().getName());
info(e.getMessage());
}
}
//------------------------------------------------
// Serialize the vector
//------------------------------------------------
public void serializeVector(String fileName, Vector vec) {
try {
FileOutputStream fos = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(vec);
oos.close();
} catch (Exception e) {
info("Exception in writeObjectFile():");
info(e.getClass().getName());
info(e.getMessage());
}
}
Lesson 4:
Using Serialization
// SerializedObjectReader.java
package mycode;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.Vector;
import java.util.Iterator;
if (args.length < 1) {
sor.info(
"{name of serialized vector} [-print]");
return;
}
serializedObjectName = args[0];
vec = sor.readObjectFile(serializedObjectName);
if (vec == null) {
return;
}
sor.printLines(vec);
}
//------------------------------------------------
// Print to standard output
//------------------------------------------------
while (iter.hasNext()) {
System.out.println((String) iter.next());
}
}
// ------------------------------------------------
// Read serialized object (in this case a Vector)
// and reconstitute it in a Vector object
//------------------------------------------------
public Vector readObjectFile(String strFileName) {
try {
Vector vec;
Lesson 6:
Using Piped Streams
/*
EchoApp.java
//================================================
// Instance Variables
//================================================
private EchoGUI _gui;
private String _strInput;
//================================================
// GUI methods
//================================================
//------------------------------------------------
// Send input to pipe
//------------------------------------------------
public void sendMessage(String strMsg) {
// Start a thread to send output
synchronized(this) {
_strInput = strMsg;
notifyAll();
}
}
PipedReader pipeR;
PipedWriter pipeW;
// Create PipedReader
pipeR = new PipedReader();
//------------------------------------------------
// Lab: create PipedWriter connected to PipedReader
//------------------------------------------------
try {
pipeW = new PipedWriter(pipeR);
}
catch(IOException e) {
System.out.println("Can't create PipedWriter:\n" + e);
return;
}
//================================================
// Private Inner Class: InputThread
//================================================
private class InputThread extends Thread {
private PrintWriter _pwPipe;
feedString(_strInput);
_strInput = null;
EchoApp.this.notify();
}
}
}
catch(IOException e) {
//------------------------------------------------
// Lab: create StringReader from _strInput
//------------------------------------------------
StringReader sr = new StringReader(_strInput);
BufferedReader br = new BufferedReader(sr);
//------------------------------------------------
// Lab: read string line by line
//------------------------------------------------
String str = br.readLine();
while(str != null) {
_pwPipe.println(str);
str = br.readLine();
}
}
}
//================================================
// Private Inner Class: OutputThread
//================================================
private class OutputThread extends Thread {
BufferedReader _br;
Lesson 7:
Displaying File Information
//FileDescriptorApp.java
import java.io.*;
if(file.exists()) {
// Display general stuff:
System.out.println("Absolute path: "
+ file.getAbsolutePath());
System.out.println("Canonical path: "
+ file.getCanonicalPath());
// For directories:
if(file.isDirectory()) {
System.out.println(args[0]
+ " is a directory. It contains:");
String[] files;
if( args.length > 1 )
files = file.list(new FileFilter(args[1]));
else
files = file.list();
for( int i = 0; i < files.length; i++ ) {
System.out.println((i+ 1) + ". " + files[i]);
}
}
// Normal files:
else if(file.isFile()) {
System.out.println(args[0] + " is a file.");
}
}
else
System.out.println("File does not exist.");
}