/**
* Use a BufferedReader and a BufferedWriter to
* copy a text file, inverting the case of letters
* in the process.
*
* To use this program, specify the name of the
* source file and the destination file.
* For example, to copy a file called test.txt to a file called
* test.inv, use the following command line:
*
* java InvertCopy test.txt test.inv
*
*/
package FileIO;
import java.io.*;
/**
* @author Administrator
*
*/
public class InvertCopy {
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader br;
BufferedWriter bw;
// First make sure that both files have been specified.
if (2 != args.length) {
System.out.println("Usage: InvertCopy From To");
return ;
}
// Open a FileReader that is wrapped in a BufferedReader.
try {
br = new BufferedReader(new FileReader(args[0]));
} catch (FileNotFoundException exc) {
System.out.println("Input File Not Found");
return ;
}
// Open a FileWriter that is wrapped in a BufferedWriter.
try {
bw = new BufferedWriter(new FileWriter(args[1]));
} catch (IOException excW) {
System.out.println("Error Opening Output File");
// Close the open input reader.
try {
br.close();
} catch (IOException excR) {
System.out.println("Error Closing Input File");
}
return ;
}
/**
* Copy the file, inverting case in the process.
* Because buffered streams are used, the
* read and write operatings are automatically
* buffered, which results in higher performance.
*/
try {
int i;
do {
i = br.read();
if (-1 != i) {
if (Character.isLowerCase((char)i))
bw.write(Character.toUpperCase((char)i));
else if (Character.isUpperCase((char)i))
bw.write(Character.toLowerCase((char)i));
else
bw.write((char)i);
}
} while (-1 != i);
} catch (IOException exc) {
System.out.println("File Error");
}
try {
br.close();
} catch (IOException exc) {
System.out.println("Error Closing Input File");
}
try {
bw.close();
} catch (IOException exc) {
System.out.println("Error Closing Output File");
}
}
}
04-29