Your assignment is to write a complete program that will:

1. Read a file named “fileList.txt”
a. Consisting of:
i. A list of files
2. For each of the files in fileList.txt
a. Determine if it exists
i. If it exists, Process the file contents
1. Determine and Capture the name of the file
2. Determine and Capture the callers’ name(s) if available
3. Determine and Capture the callers’ phone number(s)
4. Determine and Capture the time and date of the text message
5. Determine and Capture the text message
6. All files created shall be created in the workspace
7. All files read shall be in the workspace
8. Write the formatted output to the console
9. Write the formatted output to a single output file name “NSA.txt”
10. The absolute path shall be the first line of output for both the console and the NSA.txt file followed by a single blank line.
11. The format for each output must be:
The Absolute path

Name of file being processed
Caller Name 1: name goes here or “unknown”
Caller Name 2: other name goes here or “unknown”
Caller Number 1: xxx-xxx-xxxx or “unknown”
Caller Number 2: xxx-xxx-xxxx or “unknown”
Time: hh:mm: ss
Text message goes here

Where xxx is three digits and xxxx is four digits
Where YYYY is the four digit year,
Where MM is the two digit month
Where DD is the two digit day
Where hh is the two digit hour
Where mm is the two digit minute
Where ss is the two digit second

ii. If the file does not exist
1. Write to the console and the NSA.txt file the following:
File: FN.FT not found

Where FN is the file name and FT is the file extension
Learning Objective:
Show that you know how to use the Scanner and PrintStream classes along with the FileNotFoundException to process files without violating the concepts of good coding. Also to know how to use the relative and absolute path options. (This will be considered as part of the grading)

Limitations and grading criteria:
1. You may not sort any of the files.
2. You may not alter any of the data in the input files.
3. You may not use anything that has not been taught to date.
4. You may not use any code that you get from other sources.
5. Your program must be general enough to handle any input meeting the specified criteria. In other words, do not write the program for a specific data file, but for a general case.
6. You must determine the input file format from the files provided
7. If your program does not execute your points will be greatly reduced
8. You may not use recursion
9. Do not use Global or class level variables
10. If an input value is missing, you must indicate that by printing “unknown” in its place.

Your program will be graded on the following concepts:
1. Methods
a. Good cohesion
b. No coupling
c. No chaining
2. Robustness
a. Accepts specified input
b. Rejects bad input without terminating the program
3. IO
a. Use of Scanner
b. Use of PrintStream
4. Looping and Boolean logic
a. Logic
b. Termination
c. priming
5. Correct output
a. Values
b. format
6. Algorithm development
7. Proper documentation
a. JavaDoc class
b. JavaDoc methods
c. Comments within code
Powered by