java中如何读取一个txt中的某行字符串?

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Random;
/**
*
* @author Qin
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException{
// TODO code application logic here
String mot1=Lire();
System.out.println(mot1);

}

public static String Lire() throws IOException
{
BufferedReader lecteurAvecBuffer = null;
String ligne = " ";
//String mot=new String();
Random r=new Random();
int num;
num=r.nextInt(10);
try
{
lecteurAvecBuffer = new BufferedReader(new FileReader("dictionnaire.txt"));
}
catch(FileNotFoundException exc)
{
System.out.println("Erreur d'ouverture");
}
for(int i=0;i<=num;i++){
ligne = lecteurAvecBuffer.readLine();
}
String[] tmp=ligne.split(" ");

lecteurAvecBuffer.close();
String mot=tmp[2];
return mot;
}
错误提示Erreur d'ouverture
Exception in thread "main" java.lang.NullPointerException
at motus.Main.Lire(Main.java:50)
at motus.Main.main(Main.java:24)
Java Result: 1
找不到文件?"dictionnaire.txt"已放在同一项目下。新手,请大侠指教。

第1个回答  2011-11-25
你可以把dictionnaire.txt文件放在src目录中。也就相当于放在了classpath的根目录中。
然后使用这种下面的形式读取文件。

public void test() throws IOException {
InputStream in = Test.class.getClassLoader().getResourceAsStream("dictionnaire.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String str = reader.readLine();
System.out.println(str);
}本回答被网友采纳
第2个回答  2011-11-25
你这个肯定读不出来了,你写的是相对路径,而这里要的必须是绝对路径.
给你一个例子:如果你的文件在C盘的student这个文件夹下的话,路径就因该写 "C://student/dictionnaire.txt"
第3个回答  2011-12-01
放到src目录下,还不行的话就写成绝对路径。
写这种程序拿不准的话可以边写边小测一下,确定bug出现的位置
第4个回答  2011-11-25
放项目目录下就行了,它找文件是从项目发布的那个目录开始的
第5个回答  2011-11-25
把文件放在项目的根目录就行了。
相似回答