I get error that variable fin might not have been initialized in the following program. Please clear me the concept about initialization. :
import java.io.*;
class ShowFile
{
    public static void main(String args[])
    throws IOException
    {
        int i;
        FileInputStream fin;
        try
        {
            fin=new FileInputStream(args[0]);
        }
        catch(FileNotFoundException e)
        {
            System.out.println("File not found");
        }
        catch(ArrayIndexOutOfBoundsException e)
        {System.out.println("Array index are out of bound");}
        do
        {
            i=fin.read();
            System.out.println((char) i);
        } while(i!=-1);
        fin.close();
    }
}
but in the following code, I don't get such error
import java.io.*; 
class ShowFile { 
  public static void main(String args[]) 
  { 
    int i; 
    FileInputStream fin; 
    // First, confirm that a file name has been specified. 
    if(args.length != 1) { 
      System.out.println("Usage: ShowFile filename"); 
      return; 
    } 
    // Attempt to open the file. 
    try { 
      fin = new FileInputStream(args[0]); 
    } catch(FileNotFoundException e) { 
      System.out.println("Cannot Open File"); 
      return; 
    } 
    // At this point, the file is open and can be read. 
    // The following reads characters until EOF is encountered. 
    try { 
      do { 
        i = fin.read(); 
        if(i != -1) System.out.print((char) i); 
      } while(i != -1); 
    } catch(IOException e) { 
      System.out.println("Error Reading File"); 
   } 
    // Close the file. 
    try { 
      fin.close(); 
    } catch(IOException e) { 
        System.out.println("Error Closing File"); 
    } 
  } 
}
Why so ? Please help me. and sorry for the inconvenience in reading. It's my first post so I don't know that exactly how to post.
Thank you.