2013-04-30 138 views
-3

我正尝试在Java中读取像这样的文本文件(请参阅下面的代码)。使用Java读取文件时出错

在文本文件中读取数据时

预期的行为是:

  1. 当它发现lesson,它增加了INF999,爪哇,30〜课程对象
  2. 当它发现student,它增加了XXX的名头50 4到Student对象
  3. 当它发现registration,它增加了XXX和INF999到登记对象

下面的代码:

// 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"); 

我不知道为什么,但是这始终执行导致错误。你可以帮我吗?

+1

抛出异常,而不是仅仅打印“错误”,做e.printStackTrace()。那会告诉你发生了什么事。 – sjr 2013-04-30 04:54:37

+0

java.io.FileNotFoundException:test.txt(没有这样的文件或目录)。不在'src'中? – Meh 2013-04-30 04:56:12

+0

所以输入文件不在你期望的位置 – sjr 2013-04-30 04:57:29

回答

0

尝试

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

我得到'java.lang.NullPointerException' – Meh 2013-04-30 05:01:15

+0

你在哪里使用'路径'变量。我看不到在功能 – Byter 2013-04-30 05:02:08

+0

函数中使用?它只是在参数中获得文件名 – Meh 2013-04-30 05:03:35

0
从错误中

除此之外,你提的是,有没有办案登记..所以它进入else块。

它在这行代码

else { throw new Exception(); } 

去和登记即when words[0].equals("[registration]")

+0

哦,对不起,我的程序是法语的,我翻译社区的话。这是'注册' – Meh 2013-04-30 05:14:36

+0

好吧然后,尝试像FileInputStream一样做fstream = new FileInputStream(path);确保你有你的文件。 – 2013-04-30 05:15:30

+0

我做了,但是... :( – Meh 2013-04-30 05:20:24