1 import java.io.File;
2 import java.io.FileNotFoundException;
3 import java.io.PrintWriter;
4 import java.util.Scanner;
5
6 /**
7 This program encrypts a file using the Caesar cipher.
8 */
9 public class CaesarCipher
10 {
11 public static void main(String[] args) throws FileNotFoundException
12 {
13 final int DEFAULT_KEY = 3;
14 int key = DEFAULT_KEY;
15 String inFile = null;
16 String outFile = null;
17
18 for (int i = 0; i < args.length; i++)
19 {
20 String arg = args[i];
21 if (arg.charAt(0) == '-')
22 {
23 // It is a command line option
24
25 char option = arg.charAt(1);
26 if (option == 'd') { key = -key; }
27 else { usage(); return; }
28 }
29 else
30 {
31 // It is a file name
32
33 if (inFile == null) { inFile = arg; }
34 else if (outFile == null) { outFile = arg; }
35 else { usage(); return; }
36 }
37 }
38 if (inFile == null || outFile == null) { usage(); return; }
39
40 Scanner in = new Scanner(new File(inFile));
41 in.useDelimiter(""); // Process individual characters
42 PrintWriter out = new PrintWriter(outFile);
43 while (in.hasNext())
44 {
45 char from = in.next().charAt(0);
46 char to = (char) (from + key);
47 out.print(to);
48 }
49 in.close();
50 out.close();
51 }
52
53 /**
54 Prints a message describing proper usage.
55 */
56 public static void usage()
57 {
58 System.out.println("Usage: java CaesarCipher [-d] infile outfile");
59 }
60 }