Write a JAVA program that reads a stream of integers from a file and prints to the screen the range of integers in the file (i.e. [lowest, highest]). You should first prompt the user to provide the file name. You should then read all the integers from the file, keeping track of the lowest and highest values seen in the entire file, and only print out the range of values after the entire file has been read. Importantly, unlike the previous problem, you can make no assumptions about the contents of the file. If your program cannot read the file, opens an empty file, or encounters a non- integer while reading the file, your program should output that the file is invalid. You have been supplied JUnit tests for several invalid files (e.g. non-existent, empty, non- integer) as well as files that contain only integer values. Solution ReadFileNumbers.java import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileNumbers { public static void main(String[] args) throws FileNotFoundException { Scanner scan = new Scanner(System.in); System.out.print(\"Enter the file name: \"); String fileName = scan.next(); File file = new File(fileName); int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; if(file.exists()){ try{ Scanner scan1 = new Scanner(file); if(scan1.hasNext()){ while(scan1.hasNext()){ int n= scan1.nextInt(); if(min > n){ min = n; } if(max < n){ max = n; } } System.out.println(\"highest number is \"+max); System.out.println(\"lowest number is \"+min); } else{ System.out.println(\"File is an empty\"); } } catch(Exception e){ System.out.println(\"File is invalid. File has a a non-integers.\"); } } else{ System.out.println(\"File does not exist\"); } } } Output: Enter the file name: D:\\\ umbers.txt highest number is 9 lowest number is -17 numbers.txt 3 4 2 -1 1 5 7 -11 -12 -17 6 9 8.