readfile类是我创建的类,所以我可以从file.txt读取一些字符串,然后在控制台中打印它们:
package mainpackage;
import java.io.*;
import java.util.*;
public class readfile {
private Scanner x;
public void openFile(){
try {
x = new Scanner(new File("file.txt"));
} catch (Exception e) {
System.out.println("Could not find file");
}
}
public void readFile(){
while(x.hasNext()){
System.out.print(x.nextLine()+"\n");
}
}
public void closeFile(){
x.close();
}
}
但是当我在main中调用类的方法时,我得到如下错误: 线程“main”java.lang.NullPointerException中的异常。这是主要的电话:
public static void main(String [] args)
{
readfile r = new readfile();
r.openFile();
r.readFile();
r.closeFile();
}
有什么想法吗?谢谢
答案 0 :(得分:2)
您不应该在openFile()
中捕获异常,或者如果捕获它,如果在openFile()
方法中出现异常则抛出新异常Scanner将为null并且在其他方法中获得空指针异常。
package mainpackage;
import java.io.*;
import java.util.*;
public class readfile {
private Scanner x;
public void openFile() throws Exception{
try {
x = new Scanner(new File("file.txt"));
} catch (Exception e) {
//in here throw (this/another) exception to caller or don't catch this exption
System.out.println("Could not find file");
throw new Exception("Could not find file");
}
}
public void readFile(){
while(x.hasNext()){
System.out.print(x.nextLine()+"\n");
}
}
public void closeFile(){
x.close();
}
}
测试的主要驱动因素:
public static void main(String [] args)
{
try {
readfile r = new readfile();
r.openFile();
r.readFile();
r.closeFile();
} catch (Exception e) {
e.printStackTrace();
System.out.println("got exception");
}
}
答案 1 :(得分:-1)
您需要提供文件的实际路径
喜欢 - " /home/desktop/file.txt", 如果文件在你的内部,则提供相对路径 - /app/file.txt
答案 2 :(得分:-1)
如果抛出异常,“x”下的值是多少? 接下来会发生什么?
(您应该使用调试器来检查readFile()func)
我需要澄清:有人要求提出问题让@Marios P站起来思考。