在Java中读取文件时出错

时间:2013-04-30 04:53:20

标签: java file

我试图在Java中读取这样的文本文件(参见下面的代码)。

在文本文件中阅读时的预期行为是:

  1. 当找到lesson时,它会将INF999,Java,30添加到Lesson对象
  2. 当找到student时,会将XXX名称前50位4添加到学生对象
  3. 当找到registration时,会将XXX和INF999添加到注册对象
  4. 以下是代码:

    // test.txt
    [lesson] INF999 Java 30
    [student] XXX name first 50 4
    [registration] XXX INF999
    
    // readFile method
    public void readFile(String path) {
       try {
          FileInputStream fstream = new FileInputStream(path);
    
          BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
          String ligne;
          while ((ligne = br.readLine()) != null) {
              String[] words = ligne.split(" ");
              if (words[0].equals("[lesson]")) {
                  String acronym = words[1];
                  String name = words[2];
                  int nbMaxStudents = Integer.parseInt(words[3]);
                  addLesson(new Lesson(acronym, name, nbMaxStudents));
              } else if (words[0].equals("[student]")) {
                  // same thing
              } else if (words[0].equals("[registration]")) {
                  // same thing
              } else { throw new Exception(); }
          }
          br.close();
       } catch (Exception e) { System.out.println("error"); }
    }
    

    在我的main方法中,我把它放在:

    Programme programme = new Programme(numProgramme);
    programme.readFile("test.txt");
    

    我不知道为什么,但这次执行总会导致错误。你能帮我吗?

2 个答案:

答案 0 :(得分:0)

Programme programme = new Programme(numProgramme);
programme.readFile("src/test.txt");

答案 1 :(得分:0)

除了错误之外,你提到了,注册没有案件处理..所以它进入了else块。

这是在这行代码

else { throw new Exception(); }

并为注册提出例外,即when words[0].equals("[registration]")