java - java写入文件时遇到问题

标签 java writer

嘿,我正在尝试写入文件,但在写入文本文件每一行的行上出现错误,无法弄清楚任何帮助将不胜感激 作家代码 .

 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++;    
    }

完整代码

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,

最佳答案

好的,这是你应该做的:

发生的情况是您在它实际执行任何操作之前将其关闭。因此,让我们将 finally 子句移至所有内容的末尾:

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) {}
 }

关于java - java写入文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24176120/

相关文章:

java - 在具有基于网格的背景的网格中排列组件

C Reader Writer程序,一个reader并没有读取所有数据

java - BufferedWriter 无法正确写入 JSON 字符串

java - 尝试将文件写入内部数据时不断出现 NullPointerException

Java : How to map the json string returned by Oauth2 service to model class object

java - 无法转换为 char 吗? : operator

java - 方法不会重写或实现父类(super class)型 ExoPlayer 中的方法

java - 调试时,如果我有一些编写器,我怎样才能得到它正在写入的文件名+路径?

java - Android:JsonWriter 无法写入文件

java - 美元符号 ($) 在 printf 格式字符串中起什么作用?