Search code examples
javawriter

Trouble Writing to file in java


Hey im trying to write to a file but im getting an error on the line where it writes the line that goes into each line of a text file, cant figure it out any help would be greatly appreciated The Writer Code .

 public static void stuIDWrite() throws IOException
 {
     Writer writer = null;

 try {
     writer = new BufferedWriter(new OutputStreamWriter(
           new FileOutputStream("Res/stuIDSorted.txt")));
 } catch (IOException ex) {
   // report
 } finally {
    try {writer.close();} catch (Exception ex) {}
 }
 int i = 0;

    while (i <= stuArrayIdSort.length + 1)
    {
        ln = stuArrayIdSort[i].getStuLastName();    
        fn = stuArrayIdSort[i].getStuFirstName();
        pn = stuArrayIdSort[i].getStuFirstName();
        id = stuArrayIdSort[i].getStuId();
        ft = stuArrayIdSort[i].getFTime();
        phn =stuArrayIdSort[i].getPhoneNum();
        lj = stuArrayIdSort[i].getLovJava();
        con = stuArrayIdSort[i].getCont();
            writer.write(ln + "," + fn + "," + pn  + ","+ id + "," + ft + "," + phn + "," + lj + "," + con + "\n");
            writer.close();
            i++;    
    }

The Full Code

import java.io.*;
import java.util.*;
public class StudentMain {
    /**
     * @param args
     */

        //array and sorting variables
     public static studentConstructor[] stuArrayOrig = new studentConstructor[23];
     private static studentConstructor[] stuArrayIdSort = new studentConstructor[23];
     private static studentConstructor[] stuArrayNameSort = new studentConstructor[23];
     private static int lineCount = 0;
     private static int nElms = 0;

     //writer


     //studentConstructor variables 
        public static String fn; //First Name
        public static String ln; //Last Name
        public static String pn; //Preferred Name
        public static int id;     //Student Id Number
        public static boolean ft;//Full-time Boolean
        public static int phn;   //Student Phone Number
        public static boolean lj;//Loving java Boolean
        public static String con;//Continuing 


        File idSort = new File("stuListSortID.txt");


     public static void StuRead()
     {

        Scanner inFile = null;

         try
         {
             inFile = new Scanner
                    (new FileReader("Res/students.txt"));
         }
         catch (FileNotFoundException e)
         {
             // TODO Auto-generated catch block
             System.out.println("File Not Found");
             e.printStackTrace();
         }

            while (inFile.hasNextLine()){
                        inFile.useDelimiter(",|\\n"); //breaks the lines into single info

                        ln = inFile.next();
                            System.out.println(ln);

                        fn = inFile.next();
                            System.out.println(fn);

                        pn = inFile.next();
                            System.out.println(pn);

                        id = inFile.nextInt();
                            System.out.println(id);

                        ft = inFile.nextBoolean();
                            System.out.println(ft);

                        phn = inFile.nextInt();
                            System.out.println(phn);

                        lj = inFile.nextBoolean();
                            System.out.println(lj);

                        con = inFile.next();
                            System.out.println(con);

                            studentConstructor st = new studentConstructor(ln, fn, pn, id, ft, phn, lj, con);
                            stuArrayOrig[lineCount] = st;
                            inFile.nextLine();
                            System.out.println(stuArrayOrig[lineCount]);


                        lineCount++;
                    }
            //setting info into other arrays
            stuArrayIdSort = stuArrayOrig;
            stuArrayNameSort = stuArrayOrig;            

            System.out.println("orig array length" + stuArrayOrig.length);
            System.out.println("id array length" + stuArrayIdSort.length);
            System.out.println("name array length" + stuArrayNameSort.length);
            System.out.println("number of file lines" + lineCount);




            inFile.close(); 


    }    

     public static void stuIdSort()
     {
         studentConstructor temp;
         boolean sorted = false;

         while (sorted == false)
         {  sorted=true;
            for (int i=0; i<stuArrayIdSort.length-1 ; i++)
            {
                if(stuArrayIdSort[i].getStuId() > stuArrayIdSort[i+1].getStuId())
                {
                    temp = stuArrayIdSort[i+1];
                    stuArrayIdSort[i+1] = stuArrayIdSort[i];
                    stuArrayIdSort[i] = temp;
                    sorted=false;

                }
            }
        }
         for(int i=0; i<stuArrayIdSort.length; i++)
         {
             int getSC = stuArrayIdSort[i].studentId;
             System.out.println("number of swaps " + i+1 +" " +getSC);
         }
     }

    //stuArrayIdSort[i].getStuLastName(),stuArrayIdSort[i].getStuFirstName(),stuArrayIdSort[i].getPrefName(),stuArrayIdSort[i].getStuId(),stuArrayIdSort[i].getFTime(),stuArrayIdSort[i].getPhoneNum(),stuArrayIdSort[i].getLovJava(),stuArrayIdSort[i].getCont()
     public static void stuIDWrite() throws IOException
     {
         Writer writer = null;

         try {
             writer = new BufferedWriter(new OutputStreamWriter(
                   new FileOutputStream("Res/stuIDSorted.txt")));
         } catch (IOException ex) {
           // report
         } finally {
            try {writer.close();} catch (Exception ex) {}
         }
         int i = 0;

            while (i <= stuArrayIdSort.length + 1)
            {
                ln = stuArrayIdSort[i].getStuLastName();    
                fn = stuArrayIdSort[i].getStuFirstName();
                pn = stuArrayIdSort[i].getStuFirstName();
                id = stuArrayIdSort[i].getStuId();
                ft = stuArrayIdSort[i].getFTime();
                phn =stuArrayIdSort[i].getPhoneNum();
                lj = stuArrayIdSort[i].getLovJava();
                con = stuArrayIdSort[i].getCont();
                    writer.write(ln + "," + fn + "," + pn  + ","+ id + "," + ft + "," + phn + "," + lj + "," + con + "\n");
                    writer.close();
                    i++;    
            }
     }

     public static void stuNameSort()
     {

     }

     public static void stuNameWrire()
     {

     }
}
//lastName, firstName, perName, studentId, fulltime,

Solution

  • Ok, here is what you should do:

    What's happening is that you are closing it before it can actually do anything. So, lets move your finally clause to the end of everything:

    public static void stuIDWrite() throws IOException
     {
         Writer writer = null;
    
     try {
         writer = new BufferedWriter(new OutputStreamWriter(
           new FileOutputStream("Res/stuIDSorted.txt")));
    
     int i = 0;
    
    while (i <= stuArrayIdSort.length + 1)
    {
        ln = stuArrayIdSort[i].getStuLastName();    
        fn = stuArrayIdSort[i].getStuFirstName();
        pn = stuArrayIdSort[i].getStuFirstName();
        id = stuArrayIdSort[i].getStuId();
        ft = stuArrayIdSort[i].getFTime();
        phn =stuArrayIdSort[i].getPhoneNum();
        lj = stuArrayIdSort[i].getLovJava();
        con = stuArrayIdSort[i].getCont();
            writer.write(ln + "," + fn + "," + pn  + ","+ id + "," + ft + "," + phn + "," + lj + "," + con + "\n");
            i++;    
    }
    } catch (IOException ex) {
       // report
      } finally {
    try {writer.close();} catch (Exception ex) {}
     }