无法在java中编写txt文件

时间:2016-12-23 21:12:40

标签: java

我正在开发一项功能,使用户可以检查单个学生的评估结果。我使用try和catch,但是当我运行代码时,系统直接运行到catch部分,文件的内容为空。我不确定这个问题的原因。这是我的代码:

System.out.println('\n' + "Please enter the Student's uni that you would like to call. Type 'exit' to leave");
       String studentInfo = s.nextLine();
       if (studentInfo.equalsIgnoreCase("exit")) {
       userSelection = "exit";
                                        }

      boolean studentFound = false;
      for (int i = 0; i < students.size(); i++) {

      if (studentInfo.equalsIgnoreCase(students.get(i).getStudentUI())) {
      studentFound = true;

       try {
             File singleStudentList = new File(studentInfo + " .txt");
             PrintWriter writer = new PrintWriter(singleStudentList);

             System.out.println(studentUniLists.get(i));

             writer.println(studentUniLists.get(students.indexOf(studentInfo)));
             writer.close();
            } catch (Exception e) {
            System.out.println("Problem writing the file. Please make sure the path is correct");
            }

           }
        }

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

我的预感是你的错误属于以下两行之一:

     System.out.println(studentUniLists.get(i));

     writer.println(studentUniLists.get(students.indexOf(studentInfo)));

你没有包含关于studentUniLists是什么的代码,所以这里有一些猜测。

我的猜测是,students.indexOf(studentInfo)可能会返回-1,所以当你在List上执行studentUniLists.get(-1)时,这会给你一个{{1} }。你应该只抓住IndexOutOfBoundsException,以便你可以发现这类问题

答案 1 :(得分:0)

可能在某处索引越界,例如:

System.out.println(studentUniLists.get(i));

你确定studentUniLists有索引吗? 既然你写了没有输出,它只是直接捕获。

如其他地方所述,打印实际异常会有所帮助。

答案 2 :(得分:0)

您捕获任何异常并向控制台打印这是与文件相关的问题。它不一定是。 我建议你添加到你的catch子句e.printStackTrace()来打印真正的问题。其次,你应该考虑避免捕获异常,因为它太宽泛了。可能值得捕捉与文件问题有关的异常,并将其余部分保留为未被捕获。

查看文档 - PrintWriter不太可能抛出错误。 Comstructor可能会抛出FileNotFoundException或SecurityException。 CheckErrors是检查文件相关错误所需的功能。 https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#checkError()。但我相信你有非文件相关的问题,如NullPointerException或IndexOutOfBoundsException。

希望这有帮助。

答案 3 :(得分:0)

首先,使用Jdk 1.7打开文件时,使用尝试使用ressources 让jvm自动关闭。

File singleStudentList;

try (singleStudentList = new File(studentInfo + " .txt")) {         

         PrintWriter writer = new PrintWriter(singleStudentList);

}

其次,错误就是这样:新文件(studentInfo +“。txt”) 你总是创建空文件“true .txt”

第三, ex.printStackTrace();

打印错误