public class L20 {
public static void main(String[] args) throws IOException{
Scanner input=new Scanner(System.in);
System.out.println("Enter file name");
String in=input.nextLine();
try{
textWriter(in);
textReader(in);
textChanger(in);
}catch(Exception e){
}
}
public static void textWriter(String path) throws IOException{
String[] alphabet=
{"a","b","c","d","e","f","g","h","i","j","k","m","l","n","o","p","q","r","s","t","u","v","w","x","y","z"};
File file=new File(path);
Writer output=null;
Random number=new Random();
output=new BufferedWriter(new FileWriter(file));
int lines=10+number.nextInt(11);
for(int i=0;i<lines;i++){
int it2=1+number.nextInt(9);
int n1=number.nextInt(26);
int n2=number.nextInt(26);
int n3=number.nextInt(26);
String t2=Integer.toString(it2);
String t1=alphabet[n1]+alphabet[n2]+alphabet[n3];
String text=t1+t2;
output.write(text);
((BufferedWriter) output).newLine();
}
output.close();
System.out.println("Your file has been written");
}
public static void textReader(String path) throws IOException{
File file=new File(path);
Scanner input;
input=new Scanner(file);
String line;
while((line=input.nextLine())!=null){
System.out.println(line);
}
input.close();
}
private static void textChanger(String path) throws IOException{
File file=new File(path);
Scanner input2;
input2=new Scanner(file);
String line;
while((line=input2.nextLine())!=null){
System.out.println(line);
}
input2.close();
}
}
textWriter works fine. textReader and textChanger are exactly the same! But textReader works fine and textChanger does not! WHy? I even have renamed the scanner for each method. It seems the Text.txt can only be read for once??
The problem is that your program is crashing silently in
textReader
andtextChanger
is not being called at all. Instead of this:you should use this:
Scanner.nextLine()
will not returnnull
if there is no more input; it will throw aNoSuchElementException
.In general, don't silently catch exceptions. At least call
printStackTrace()
or log the problem!